AP

Size: a a a
AP
N
{-# LANGUAGE TypeFamilies, FlexibleInstances, MultiParamTypeClasses #-}
class Variadic n r where
variadic :: (n -> n -> n) -> n -> r
instance {-# INCOHERENT #-} (m ~ n) => Variadic n m where
variadic f n = n
instance (Variadic n r, m ~ n) => Variadic n (m -> r) where
variadic f n = variadic f . f n
main = print $ variadic (+) 6 9 42
[
JS
JS
JS
[
DB
JS
N
JS
DB
AP
N
MK
MK
DB
JS
AP