HaskellのApplicativesを学習しています。pure
たとえば、関数は実際には必要ないようです(おそらく間違っています)。
pure (+) <*> [1,2,3] <*> [3,4,5]
次のように書くことができます
(+) <$> [1,2,3] <*> [3,4,5]
誰かpure
が明示的なマッピングよりも関数が提供する利点を誰かに説明できますかfmap
?
pure
Applicative計算で「純粋な」値を使用できるようにします。あなたが正しく観察しているように、はとpure f <*> x
同じf <$> x
ですが、たとえばに相当するものはありませんf <*> x <*> pure y <*> z
。(少なくとも私はそうは思いません。)
fmap (\f' x' z' -> f' x' y z') f <*> x <*> z
、私は思います。アイデアは、Applicative
「交換」の法則としてドキュメントにあります。
pure f <*> x
とまったく同じfmap f x
です。にpure
含まれた理由は確かにありますが、その理由はApplicative
完全にはわかりません。