gpt4 book ai didi

haskell - Applicative/Monad 实例对于 Sum 和 Product 有什么用?

转载 作者:行者123 更新时间:2023-12-03 05:03:36 25 4
gpt4 key购买 nike

我对 SumProduct 新类型的理解是它们充当数字类型的幺半群包装器。我会理解它们上的 Functor 实例,但为什么还有 Applicative、Monad 等许多其他看似无用的实例?我知道它们在数学上是可以的(与 Identity modad 同构,对吧?)但是用例是什么?例如,如果有一个 Applicative Sum 实例,我希望在某处遇到 Sum (a -> b) 类型的值。我无法想象这有什么用处。

最佳答案

此类实例可以方便地提升任意函数来处理当前位于 SumProduct 内的事物。例如,人们可能会想象想要对某些东西进行一些按位运算,但在 Sum 中比裸露的东西更方便;然后是 liftA2 (.&.) :: Sum Int -> Sum Int -> Sum Int(例如)。

还可以通过为 Bits 提供 Sum 实例来提供此操作,但推广该技术将需要 Sum 的实现者预测人们可能想要执行的每个操作,这似乎是一项艰巨的任务。提供 ApplicativeMonad 实例可以为用户提供一劳永逸的转换,以提升他们喜欢的任何功能 - 包括 Sum 的实现者没有预测有用的功能。

关于haskell - Applicative/Monad 实例对于 Sum 和 Product 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728821/

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