gpt4 book ai didi

loops - Haskell的EitherT发生了什么?

转载 作者:行者123 更新时间:2023-12-04 08:58:57 26 4
gpt4 key购买 nike

在阅读一篇名为 Breaking from a Loop 的旧(2012 年)博客文章时作者:Gabriel Gonzalez 很明显,聚光灯 EitherT以某种方式离开了生态系统。 EitherT package声明它已被弃用,取而代之的是 either - 实际上根本不关心 monad 变压器。
我注意到有人试图清理似乎在 10 年前就存在的错误处理困惑。我的猜测是 EitherT不再需要了。
我认为博客文章中提出的打破循环的方法非常巧妙。所以我想知道:今天的EitherT 的替代品是什么? .批评ErrorT ,为此目的,我认为仍然存在,并且 ContT对于这个小问题,确实是比较重的机器。
作为引用,这是博客文章中讨论的习语:

import Control.Monad.Transfomers.EitherT

exit = left

main = runEitherT $ forever $ do
str <- lift getLine
when (str == "exit") $ exit ()
(顺便说一句,同一作者的 Control.Break 绕过了整个 EitherTErrorTContTExceptT 困惑。)

最佳答案

今天更换 EitherTExceptT :

import Control.Monad.Except

-- use `throwError` in place of `left`
exit = throwError

-- use `runExceptT` in place of `runEitherT`
main = runExceptT $ forever $ do
str <- lift getLine
when (str == "exit") $ exit ()

关于loops - Haskell的EitherT发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63654252/

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