算子和准则的类定义

class Functor f where
    fmap :: (a -> b) -> f a -> f b

看它的方法之一是,fmap 升降机值的函数到值的背景下 f 的功能。

Functor 的正确实例应该满足仿函数定律,尽管编译器不强制执行这些定律

fmap id = id                    -- identity
fmap f . fmap g = fmap (f . g)  -- composition

fmap 有一个常用的中缀别名叫 <$>

infixl 4 <$>
(<$>) :: Functor f => (a -> b) -> f a -> f b
(<$>) = fmap