Data.Kind.Extra

data A

type IsA foo

type IsAn oo

type Return f

data Pure f

type family Eval (t :: A foo -> Type) :: foo

data foo :-> bar

data Id

type Apply f x

type f ^*^ x

type family (f :: IsA (foo :-> bar)) $~ (x :: foo) :: bar

data (:>>=:)

data (:>>>:)

data (:^>>>:)

data (:>>>^:)

data (:^>>>^:)

data Extract

data Optional

type family FoldMap (append :: IsA (bar :-> IsA (bar :-> bar))) (zero :: bar) (f :: IsA (foo :-> bar)) (xs :: [(foo :: Type)]) :: (bar :: Type) where ...

data Fun1

data Fun2

data Fun3

data Fun4