算子和准则的类定义
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