我在尝试:
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]
?
答案 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'以二进制形式写入数据。这类似于将数据写为字节串。