newtype Foo a b = Foo (a -> b)
newtype Bar a b = Bar ((b -> a) -> a)
の二つが基本
他に類似品みたいなのがいっぱいあってみんなモナド
b -> (c -> a) -> a
b -> (b -> c -> a) -> a
(b -> a) -> (c -> a) -> a