haskell读取Ints数组中的文件

时间:2013-11-05 20:57:08

标签: haskell

我有一个功课来排序要从文件中提取的数字。

简单文件格式:

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 StringString的类型转换问题。我试着写

makeInteger :: IO [String] -> [Int]
makeInteger = map read

但它也不起作用。

如何处理IO monad以外的纯数据?

1 个答案:

答案 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。