Loops 哈斯克尔发生了什么事;是吗?
当读到加布里埃尔·冈萨雷斯(Gabriel Gonzalez)的一篇老(2012)博客文章时,很明显,聚光灯下的Loops 哈斯克尔发生了什么事;是吗?,loops,haskell,monad-transformers,either,Loops,Haskell,Monad Transformers,Either,当读到加布里埃尔·冈萨雷斯(Gabriel Gonzalez)的一篇老(2012)博客文章时,很明显,聚光灯下的EitherT以某种方式离开了生态系统。国家,它是反对赞成-这实际上并不关心自己与单子变压器在所有 我注意到有人试图清理10年前似乎存在的错误处理混乱。我的猜测是,它们不再需要了 我认为博客文章中提出的打破循环的方法非常巧妙。所以我想知道:今天的EitherT的替代品是什么。我认为,出于这一目的,对error的批评仍然站得住脚,而ContT对于这个小问题来说确实是相当沉重的机器 以下是
EitherT
以某种方式离开了生态系统。国家,它是反对赞成-这实际上并不关心自己与单子变压器在所有
我注意到有人试图清理10年前似乎存在的错误处理混乱。我的猜测是,它们不再需要了
我认为博客文章中提出的打破循环的方法非常巧妙。所以我想知道:今天的EitherT
的替代品是什么。我认为,出于这一目的,对error
的批评仍然站得住脚,而ContT
对于这个小问题来说确实是相当沉重的机器
以下是博客文章中讨论的习语供参考:
import Control.Monad.Transfomers.EitherT
exit = left
main = runEitherT $ forever $ do
str <- lift getLine
when (str == "exit") $ exit ()
import Control.Monad.transformers.EitherT
退出=左
main=runEitherT$forever$do
str今天取代EitherT的是ExceptT
:
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 ()
import Control.Monad.Except
--用'throwError'代替'left'`
退出=投掷者
--使用'runExceptT'代替'runEitherT'`
main=runExceptT$forever$do
这能回答你的问题吗@MarkSeemann如果EitherT
出现问题,请输入error
,同样也不正常;-),那么现在我们有了除了?是的,这就是我所说的“尝试清理错误处理”。因此,ExceptT
只是一个带有异常语义的重新命名的EitherT
?ExceptT
与您的EitherT
完全相同。唯一的区别在于名字。