on 71f5ee6 help sign in
rel8/src/Rel8/FCF.hs
26 lines 454 B history raw
1{-# language DataKinds #-}
2{-# language PolyKinds #-}
3{-# language StandaloneKindSignatures #-}
4{-# language TypeFamilies #-}
6module Rel8.FCF
7 ( Exp, Eval
8 , Compose
9 )
10where
12-- base
13import Data.Kind ( Type )
14import Prelude ()
17type Exp :: Type -> Type
18type Exp e = e -> Type
21type Eval :: Exp e -> e
22type family Eval a
25data Compose :: (Type -> Type) -> (Type -> Exp Type) -> Type -> Exp Type
26type instance Eval (Compose f g a) = f (Eval (g a))