gpt4 book ai didi

haskell - 绑定(bind)到 Haskell 中数据结构内的 monad

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

有没有办法定义只影响数据结构的一部分的绑定(bind)?

例如,假设我们有一个具有名称和结果的模拟计算数据类型。

type Name          = String
data Error = TimeOut | NotEnoughMemory | DivByZero
type Result a = Either Error a
data Computation a = Computation Name (Result a)

由于计算可能会失败,但我们可能仍然对其名称感兴趣,因此它不能是 Result 的一部分,而必须是 Computation 的一部分。另一方面,直接绑定(bind)和验证计算结果也很方便,就像使用常规的 Either 类型一样。有没有办法做到这一点?

最佳答案

不,您可能无法定义任何有用的instance Monad Computation , 因为你不能定义 pure :: a -> Computation a来自 Applicative类(它是 Monad 的父类(super class));你将如何实例化 Name只给出 a 类型的值?

这是一个 Functor虽然(你可以自动推导出它)。有了更多的上下文,可能会有一个更有用的不同抽象。

关于haskell - 绑定(bind)到 Haskell 中数据结构内的 monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52881365/

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