- 此问题在此处已有答案**:
A Haskell function of type: IO String-> String(4个答案)
Converting IO Int to Int(3个答案)
2天前关闭。
我有一个包含以下数据的文本文件:
3
7 4
2 4 6
8 5 9 3
实际上,我想提取这些数据并以如下形式返回:
["3", "7 4", "2 4 6", "8 5 9 3"]
我使用readFile
将整个文件作为单个字符串获取,然后使用lines根据'\n'
字符解析单独的行。我尝试这样做,但问题是readFile
返回IO String
,但我希望使用String
。以下是代码:
readLines :: FilePath -> [String]
readLines str = do
file <- readFile str
let list = lines (file :: String)
list
我该如何处理这个问题?
1条答案
按热度按时间qmb5sa221#
IO
的目的是 * 防止 * 从I/O操作中提取数据,相反,您的函数 * 也 * 返回一个IO操作,当在 runtime 执行时,将产生一个值列表。或者更简单地说,因为
IO
(像任何单子一样)是函子,