Я не знаю, как именно должен использоваться преобразователь List ListT
. Например, как должна выполняться эта простая задача:Как получить откат и ввод-вывод с использованием ListT?
backtrack :: ListT IO()
backtrack = do
x <- lift getLine
a <- x
lift $ print a
А какой должен быть тип функции?
Это не задача, которую я пытаюсь выполнить (я знаю, как решить эту проблему, используя многие другие методы), я просто хочу знать, как использовать ListT
для выполнения таких задач.
Какую задачу вы пытаетесь достичь? Вы на самом деле не говорите. –
Я просто хочу понять, как использовать ListT, чтобы получить функции List Monad с IO. Что я на самом деле подразумевал под «Это не задача, которую я пытаюсь выполнить», так это то, что я не хочу решений для проблемы, которые не используют «ListT», потому что я уже знаю, как это сделать, используя «mapM» например. – is7s
'a <- x' не имеет большого смысла, так как' x' имеет тип «monad», например, обычный 'a' в' m a'. Вероятно, вы хотите 'x <- liftGetline; лифт $ print a'? – alternative