如何从haskell中的文件中提取数据

时间:2015-02-08 00:51:05

标签: haskell io

我需要打开一个文件,读取第一行,将数字转换为整数X,然后从第二行读取一个X整数数组。可以在Haskell中完成吗?

以下代码:

main = do
  val1 <- getLine
  val2 <- getLine
  print val1
  print map read (words val2) :: Int

给出了这个错误:

Couldn't match expected type `(String -> a1) -> [String] -> Int'
            with actual type `IO ()'

1 个答案:

答案 0 :(得分:2)

由于懒惰,你通常不用担心逐行阅读,getContents很好。虽然,在你的情况下,也许两次调用getLine并不是那么糟糕。

您的代码很好(虽然它不会从列表中只取X个数字),但它只是您的类型,这是不对的。这一行应该让你前进:

print (map read (words val2) :: [Int])

您可能也想使用val1,如下所示:

print $ take (read val1) (map read (words val2) :: [Int])