gpt4 book ai didi

haskell - 什么是自由单子(monad)?

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

我看到术语“Free Monad”弹出 every now and then一段时间以来,但每个人似乎都只是使用/讨论它们,而没有解释它们是什么。那么:什么是自由单子(monad)? (我想说我熟悉 monad 和 Haskell 基础知识,但对范畴论只有非常粗略的了解。)

最佳答案

这里有一个更简单的答案:Monad 是当 Monadic 上下文被 join::m (m a) -> m a 折叠时“计算”的东西(回想一下 >>= 可以定义为 x >>= y = join (fmap y x))。这就是 Monad 通过顺序计算链携带上下文的方式:因为在系列中的每个点,上一个调用的上下文都会与下一个调用合并。

自由 monad 满足所有 Monad 定律,但不进行任何折叠(即计算)。它只是构建了一系列嵌套的上下文。创建此类自由单子(monad)值的用户负责对这些嵌套上下文执行某些操作,以便可以将此类组合的含义推迟到创建单子(monad)值之后。

关于haskell - 什么是自由单子(monad)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352205/

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