我有一个功课来排序要从文件中提取的数字。
简单文件格式:
45673
57879
28392
54950
23280
...
所以我想提取[Int]
而不是应用我的sort-function radix。
我在我的文件中写道
readLines :: FilePath -> IO [String]
readLines = fmap lines . readFile
makeInteger :: [String] -> [Int]
makeInteger = map read
然后我在命令行中写
radix (makeInteger (readlines("111.txt")))
然后,当然,我遇到了从IO String
到String
的类型转换问题。我试着写
makeInteger :: IO [String] -> [Int]
makeInteger = map read
但它也不起作用。
如何处理IO
monad以外的纯数据?
答案 0 :(得分:1)
根据this,"无法逃脱"来自monad对于像IO"这样的monad来说是必不可少的。
所以你需要做一些事情:
readLines :: FilePath -> IO [String]
readLines = fmap lines . readFile
makeInteger :: [String] -> [Int]
makeInteger = map read
main = do
content <- readLines "111.txt"
return (radix $ makeInteger content)
这&#34;取出内容&#34; IO monad,应用你想要的功能,然后再将它重新放回IO monad。