Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 哈斯克尔发生了什么事;是吗?_Loops_Haskell_Monad Transformers_Either - Fatal编程技术网

Loops 哈斯克尔发生了什么事;是吗?

Loops 哈斯克尔发生了什么事;是吗?,loops,haskell,monad-transformers,either,Loops,Haskell,Monad Transformers,Either,当读到加布里埃尔·冈萨雷斯(Gabriel Gonzalez)的一篇老(2012)博客文章时,很明显,聚光灯下的EitherT以某种方式离开了生态系统。国家,它是反对赞成-这实际上并不关心自己与单子变压器在所有 我注意到有人试图清理10年前似乎存在的错误处理混乱。我的猜测是,它们不再需要了 我认为博客文章中提出的打破循环的方法非常巧妙。所以我想知道:今天的EitherT的替代品是什么。我认为,出于这一目的,对error的批评仍然站得住脚,而ContT对于这个小问题来说确实是相当沉重的机器 以下是

当读到加布里埃尔·冈萨雷斯(Gabriel Gonzalez)的一篇老(2012)博客文章时,很明显,聚光灯下的
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
完全相同。唯一的区别在于名字。