gpt4 book ai didi

haskell - StateT s (ExceptT e m) 和 exceptT e (StateT s m) 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 11:31:15 25 4
gpt4 key购买 nike

Monad 转换器很棘手,我不确定(=没有良好的直觉)哪一个应该放在最上面。

最佳答案

StateT s (ExceptT e m)

这说:

  • m开头
  • 添加异常(exception)情况
  • 添加状态

现在,“添加异常”意味着您的操作可以通过两种方式终止:使用正常返回值或异常。

“添加状态”意味着状态输出的额外位将包含在正常返回值中。

因此,在StateT s (ExceptT e m)中,只有在没有异常的情况下,您才会获得结果状态。

另一方面,

ExceptT e (StateT s m)

说:

  • m开头
  • 添加状态
  • 添加异常(exception)情况

“添加状态”意味着状态输出的额外位包含在 m 的返回值中。

但是现在,您添加的异常将作为替代返回值添加到 StateT monad 内。所以你总是得到一个状态输出,然后你可能会得到一个正常的返回值,或者你可能会得到一个异常。

关于haskell - StateT s (ExceptT e m) 和 exceptT e (StateT s m) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838776/

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