gpt4 book ai didi

haskell - 对纯应用程序的需求

转载 作者:行者123 更新时间:2023-12-02 01:27:18 25 4
gpt4 key购买 nike

我正在学习 Haskell 的应用程序。在我看来(我可能错了)pure函数并不是真正需要的,例如:

pure (+) <*> [1,2,3] <*> [3,4,5]

可以写成
(+) <$> [1,2,3] <*> [3,4,5]

有人可以解释 pure 的好处吗?函数提供与 fmap 的过度显式映射?

最佳答案

fmap并不总是削减它。具体来说,pure是什么让你介绍f (其中 fApplicative )当您还没有它时。一个很好的例子是

sequence :: Applicative f => [f a] -> f [a]

它采用产生值的“ Action ”列表并将其转换为产生值列表的 Action 。当列表中没有操作时会发生什么?唯一合理的结果是不产生​​任何值的操作:
sequence [] = pure [] -- no way to express this with an fmap
-- for completeness
sequence ((:) x xs) = (:) <$> x <*> sequence xs

如果您没有 pure ,您将被迫要求一个非空的操作列表。你绝对可以让它工作,但这就像谈论加法而不提及 0 或乘法而不提及 1 (正如其他人所说,因为 Applicative s 是幺半群)。您将反复遇到可以通过 pure 轻松解决的极端情况。而是必须通过对您的输入和其他创可贴的奇怪限制来解决。

关于haskell - 对纯应用程序的需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com