HackageでApplicative Functorsに言及されているように、それらは強力な緩やかな単相ファンクタです。なぜHaskellではその定義はそうのようにそれを表示されません:(starAp)monoidalファンクタとしての適用ファンクタ
class Functor f => MonoidalApplicative f where
mult :: f a -> f b -> f (a,b)
unit :: a -> f a
starAp :: f (a -> b) -> f a -> f b
starAp h x = fmap (uncurry ($)) (mult h x)
<*>
簡単乗算の観点から再構築し、この定義は私には単純に見えています。
instance MonoidalApplicative Maybe where
mult (Just x) (Just y) = Just (x,y)
mult _ _ = Nothing
unit x = Just x
'(<*>)'プレゼンテーションは、「マルチ」言語が実際にはいくつかの面でより淡いものであっても、日々のプログラミングにおいてより便利になる傾向があります(例:適用法は、このシナリオは '(>> =)'と 'join 'の間の関係に似ています。関連するブログ記事:http://blog.ezyang.com/2012/08/applicative-functors/ – duplode
注:モノイド表示は、通常、 'unit :: f()'を持ちます。 'pure'は' pure x = fmap(const x)unit'で復元できます。 – duplode
参照http://stackoverflow.com/a/27262462/414413 – Cirdec