MK
Size: a a a
MK
MP
к
Exp (ListF a0 [k0])
и Base [k0] [k0] -> Type
одно и тожеMK
MK
MK
ЗП
MK
MP
MK
MK
к
StandaloneKindSignatures
специфицироватьtype Project2 :: forall a. a -> Exp (Base a a)
data Project2 a t
type instance Eval (Project2 '[]) = 'NilF
type instance Eval (Project2 (x ': xs)) = 'ConsF x xs
Expected kind ‘Exp (ListF a0 [k0])’,
but ‘Project2 '[]’ has kind ‘Base [k0] [k0] -> *’
Base
ЗП
type Base :: Type -> (Type -> Type)
type family Base t
ЗП
type instance Base [a] = ListF a
ЗП
type ListF :: Type -> Type -> Type
data ListF a b = ConsF a b | NilF
ЗП
ЗП
type Base :: Type -> (Type -> Type)
type family Base t
type Project2 :: forall (a :: Type). a -> Exp (Base a a)
data Project2 a t
type ListF :: Type -> Type -> Type
data ListF a b = ConsF a b | NilF
type instance Base [a] = ListF a
type instance Eval (Project2 '[]) = 'NilF
type instance Eval (Project2 (x ': xs)) = 'ConsF x xs