AZ
Size: a a a
AZ
AZ
AZ
to :: (forall x . (x -> a) -> F x) -> F a
from :: F a -> (forall x . (x -> a) -> F x)
через fmap
AZ
Prelude> :{
Prelude| phi :: (forall x . (a -> x) -> Maybe x) -> Maybe a
Prelude| phi alpha = alpha id
Prelude| :}
Prelude>
AZ
AZ
PG
AZ
ЕО
ЕО
AZ
PG
(a -> b) -> c
это будет forall a b c. (a -> b) -> c
, но (forall a. a -> b) -> c
это уже forall b c. (forall a. a -> b) -> c
AZ
struct Maybe<T> { }
Maybe<A> Phi<A, X>(Func<Func<A, X>, Maybe<X>> alpha) => alpha(_ => _);
O
AZ
O
AZ
AZ
phi :: (forall x . (a -> x) -> Maybe x) -> Maybe a
AZ
AZ