我正在学习Haskell的Applicatives。在我看来(我可能错了),pure实际上并不需要该功能,例如:
pure (+) <*> [1,2,3] <*> [3,4,5]
可以写成
(+) <$> [1,2,3] <*> [3,4,5]
有人可以解释该pure函数提供的显式映射所带来的好处fmap吗?
我没有时间来回答这个问题,也不相信这无论如何都会是一个好的或完整的回答,但是有一个观察结果:
—
Robin Zigmond
pure允许一个人在应用计算中使用“纯”值。虽然,当你正确地观察,pure f <*> x是一样的f <$> x,不存在这样的等价条件,比方说f <*> x <*> pure y <*> z。(至少我不这么认为。)
@RobinZigmond
—
HTNW
fmap (\f' x' z' -> f' x' y z') f <*> x <*> z,我想。该想法在Applicative文档中被称为“交换”定律。
pure f <*> x与完全相同fmap f x。我相信,有一些理由pure被列入Applicative,但我不完全知道为什么。