\x -> join . x的类型是(Monad m) => (a -> m (m b)) -> (a -> m b),\y -> y .(flip fmap)的类型是(Functor f) => ((a -> b) -> f b) -> (f a -> c)。
ghci的8.2.2版本允许定义h = join .为什么h有((A -> B) -> A) -> (A ->
既然单模是封闭的( -> a -> a),那么如何才能得到第二种类型'b‘呢?我的印象是折叠太宽松了,因为我可以用一个函数来折叠,因为它不是封闭的。您也会注意到,折叠和foldMap只有'a‘。下面是折叠式打字机的一个片段: fold :: Monoid m => t m -> m foldr :: (a -> <