列表理解中的 GetLine
GetLine within list comprehension
我想在列表理解中构建一个矩阵。对于每一行,我都需要 getLine 并将其解析出来。
总之,我想做这样的事情。
fun = [ getLine | y <- [0..4]]
如果我 运行 这个函数,而不是尝试从命令提示符获取每一行的 getLine,我得到一个错误,因为使用 [=19 (Show (IO String)) No Instance for (Show (IO String)) =].
我收到错误消息,但如何在列表推导中获取线条?
如果您想列出一系列操作,按顺序评估每个操作,然后 return 每个结果 – [IO a] -> IO [a]
– 有 sequence
:
fun = sequence [getLine | y <- [0..4]]
这可以简化为 Control.Monad.replicateM
:
fun = replicateM 5 getLine
我想在列表理解中构建一个矩阵。对于每一行,我都需要 getLine 并将其解析出来。
总之,我想做这样的事情。
fun = [ getLine | y <- [0..4]]
如果我 运行 这个函数,而不是尝试从命令提示符获取每一行的 getLine,我得到一个错误,因为使用 [=19 (Show (IO String)) No Instance for (Show (IO String)) =].
我收到错误消息,但如何在列表推导中获取线条?
如果您想列出一系列操作,按顺序评估每个操作,然后 return 每个结果 – [IO a] -> IO [a]
– 有 sequence
:
fun = sequence [getLine | y <- [0..4]]
这可以简化为 Control.Monad.replicateM
:
fun = replicateM 5 getLine