我一直在阅读一篇文章(http://comonad.com/reader/2012/abstracting-with-applicatives/)并在那里找到以下代码片段:
newtype Compose f g a = Compose (f (g a)) deriving Show
instance (Functor f, Functor g) => Functor (Compose f g) where
fmap f (Compose x) = Compose $ (fmap . fmap) f x
Run Code Online (Sandbox Code Playgroud)
实际上是怎么样的(fmap . fmap)?
他们的类型是:
(.) :: (a -> b) -> (r -> a) -> (r -> b)
fmap :: (a -> b) -> f a -> f b
fmap :: (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
现在从这里我可以看出哪种类型没有检查 …