typelevel-1.2.2: src/Type/Applicative.hs
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE PolyKinds #-}
module Type.Applicative (module Type.Applicative, module X) where
import Type.Functor as X
import Type.Monoid
infixl 4 <*>
type a <*> b = AppBind a b
type family AppBind a b where
AppBind a '[] = '[]
AppBind a (b ': bs) = AppBind' a b <> AppBind a bs
type family AppBind' a b where
AppBind' '[] b = '[]
AppBind' (a ': as) b = a b ': AppBind' as b