運算元和準則的類定義

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