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

How do I extract data from a file in haskell

我需要打开一个文件,读取第一行,将数字转换为整数 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 ()'

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

你的代码很好(虽然它不只从列表中取 X 数字),只是你的类型不对。这条线应该让你去:

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

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

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