如何使用ListT获得回溯和IO?

| 我真的不知道列表转换器
ListT
应该如何使用。例如,如何完成此简单任务:
backtrack :: ListT IO ()
backtrack = do
    x <- lift getLine
    a <- x
    lift $ print a
函数的类型应该是什么? 这不是我要完成的任务(我知道如何使用许多其他方法来解决此问题),我只想知道如何使用ѭ0来完成这些任务。     
已邀请:
        这是您想要做的吗?
import Control.Monad.List

backtrack :: ListT IO ()
backtrack = do
    x <- ListT getLine
    lift $ print x
在GHCi中运行的示例:
*Main> runListT backtrack
foo
\'f\'
\'o\'
\'o\'
[(), (), ()]
    
        您应该查看正确完成的ListT和回溯的LogicT软件包。尤其是逻辑上的交错处理可以更好地处理无限性。     

要回复问题请先登录注册