使用自定义数据类型创建txt文件

时间:2018-05-02 12:25:00

标签: file haskell

我有自定义数据类型:

data TextEditor = TextEditor [Char] [Char] [Char] deriving (Show)

用于在光标之前保留文本,然后保留光标,然后仅保留所做的选择。

我希望有一个“保存”功能,允许用户将此数据类型的内容保存到txt文件。我目前的版本是:

save :: TextEditor -> String -> IO()
save (TextEditor b a x) f = writeFile f (TextEditor b a x)

但是writeFile需要一个String而我正在传递三个[Char]有没有办法将其转换为字符串或者是否有我遗漏的内容?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您derive (Show, Read),那么

save :: TextEditor -> FilePath -> IO ()
save editor f = writeFile f $ show editor

restore:: FilePath -> IO (Maybe TextEditor)
restore f = readMay <$> readFile f

注意

  • readMay来自包safe
  • read / show / String的效率非常低,因此关于使用aeson等内容进行(反)序列化的说法是个好主意。
  • 如果您有自定义show个实例,则派生的read无法正常工作。