我正在尝试:
import System.IO
saveArr = do
outh <- openFile "test.txt" WriteMode
hPutStrLn outh [1,2,3]
hClose outh
但它不起作用... 输出:
从文字“1”中没有实例(Num Char)
编辑
好的,hPrint
可以使用整数,但是对于数组中的浮点数呢?[1.0, 2.0, 3.0]
?
hPutStrLn
只能打印字符串。也许你想用hPrint
?
hPrint outh [1,2,3]
程序员可以想象出数组、列表和字符串,它们也是某些语言中的术语。
文件是一系列字节,因此当您想要向其写入内容时,应该将想象中的字符串/列表/数组编码为字节序列(通过show
或Storable
等方式)。
同样,终端是一个字节序列,它是显示某些内容所需的操作的编码表示。
您有许多编码方式。您可以通过foldr (\a b -> a (',' : b)) "\n" (map shows [1,2,3])
创建数组的CSV表示,或者您可能想要使用show [1,2,3]
进行打印。
hPutStrLn stdout (show [1,2,3])
给出了正确的结果。请检查您是否使用了 show
而不是 shows
,并且您是否从 Text.Show
模块中使用它。 - ony为您的类型派生二进制,然后使用 Data.Binary 包中的 'encodeFile' 以二进制形式写入数据。这类似于将数据写出为字节串。
[1.2, 2.0, 3.0]
? - MMMhPrint
可以打印任何Show
实例。 - kennytm