我试图理解Monads 中的解释变得困难,我很难弄清楚以下新类型定义:
newtype (FComp g f) x = FComp { unCompose :: g (f x) }
instance (Functor b c f, Functor a b g) => Functor a c (FComp g f) where
fmap f (FComp xs) = FComp $ fmap (fmap f) xs
我没有看到用括号中的表达式代替类型声明来解释 newtype 的含义。因此,我无法弄清楚 fmap 函数的定义是什么意思。我也不明白为什么定义了 unCompose 字段访问器但从未使用过。我觉得我缺少一些新类型的基本语义。