如何将列表写入文件?

时间:2010-05-24 08:41:50

标签: list haskell io

我在尝试:

import System.IO
saveArr = do
    outh <- openFile "test.txt" WriteMode
    hPutStrLn outh [1,2,3]
    hClose outh

但它不起作用......输出:

  

没有(Num Char)的实例来自文字“1”

修改 确定hPrint可以使用整数但是数组中的浮点数是多少? [1.0, 2.0, 3.0]

3 个答案:

答案 0 :(得分:8)

hPutStrLn只能打印字符串。也许你想要hPrint

hPrint outh [1,2,3]

答案 1 :(得分:2)

阵列,列表和字符串只存在于程序员的想象中,而是存在于某些语言中的术语。

文件是一个字节序列,所以当你想要写一些东西时,你应该把那个想象的字符串/列表/数组编码成字节序列(show或来自Storable等的东西) )。
终端也是一个字节序列,它是向用户显示内容所需动作的编码表示。

您可以通过多种方式进行编码。您可以按foldr (\a b -> a (',' : b)) "\n" (map shows [1,2,3])对数组进行CSV表示,也可以打印show [1,2,3]

答案 2 :(得分:1)

为您的类型派生Binary,然后使用Data.Binary包中的'encode File'以二进制形式写入数据。这类似于将数据写为字节串。