Haskell 使用System.IO和句柄读取CSV文件

Haskell 使用System.IO和句柄读取CSV文件,haskell,Haskell,我试图熟悉System.IO和句柄。我只想读取一个csv文件,将一行逗号分隔的整数放入列表,将该列表放入列表列表,然后将下一行放入列表,依此类推,直到文件结束。我可以读文件,也可以读一行文件,但是我正在努力做一些事情来完成我想做的事情。csv文件“1.csv”如下所示: 1,2,3,4 4,3,2,1 12,13 到目前为止,我掌握的代码如下。它在“->x:xs”行发现错误。我根本不习惯使用的case x,所以我可能没有正确地使用它,但这似乎是一种方法。我知道我做的很多事情都是错的,但我真的不

我试图熟悉System.IO和句柄。我只想读取一个csv文件,将一行逗号分隔的整数放入列表,将该列表放入列表列表,然后将下一行放入列表,依此类推,直到文件结束。我可以读文件,也可以读一行文件,但是我正在努力做一些事情来完成我想做的事情。csv文件“1.csv”如下所示:

1,2,3,4
4,3,2,1
12,13
到目前为止,我掌握的代码如下。它在“->x:xs”行发现错误。我根本不习惯使用的case x,所以我可能没有正确地使用它,但这似乎是一种方法。我知道我做的很多事情都是错的,但我真的不知道如何进一步

import System.IO
xs = []
xss = []

readTheLine = do handle <- openFile "1.csv" ReadMode
                 x <- hGetChar handle
                 case x of
                    '\n' -> xs:xss
                     _ -> x:xs
                     '' -> putStrLn xss

main = readTheLine
import System.IO
xs=[]
xss=[]
readTheLine=do句柄x:xs
''->putStrLn xss
main=readTheLine

我也很确定“”不会表示文件的结束,但不确定在这里做什么,并试图说明我的意图。

您似乎缺乏Haskell的基本知识,比如它的不变性。除非你知道如何编写一个纯函数,它接受一个包含CSV内容的字符串并返回一个整数列表,否则不要弄乱System.IO或句柄?这正是我想要做的,但我认为这是一种方法。在搜索如何做到这一点时,我发现了不同的库,比如Text.CSV,但think System.IO更常见。我已经学习了Haskell一段时间,了解了一些纯函数,并使用了一些I/O,但没有使用文件。在程序中硬编码字符串
“1,2,3,4\n4,3,2,1\n12,13”
,并编写一个可以成功解析它的纯函数。只有当你完成了这项工作后,你才应该处理
hGetChar
之类的事情。