从文本文件Haskell加载自定义数据类型

时间:2017-03-18 22:40:27

标签: file parsing haskell types readfile

我有自定义数据类型Person

data Person = Person{ fname :: String
                    , lname :: String
                    , age :: Int
                    , siblings :: [String]
                    } deriving (Eq,Ord,Show,Read)

我还有一个文本文件,其格式类似于

"bob" "ross" 60 ["sam", "ron"]
"fname" "lname" age ["sibling1", "sibling2"]
"fname" "lname" age ["sibling1", "sibling2"]

我想将文本文件中的每一行加载到我的自定义数据类型Person中。由于有多行,因此[Person]

contents <- readFile "persons.txt"
let database :: [Person]
    database = read contents

因此database应为[Person]类型,database中的每个元素都与persons.txt中的一行相关。

我有一个将[Person]转换为字符串的函数,但是当我尝试

putStrLn (personsToString(database))

我得到*** Exception: Prelude.read: no parse

谢谢。

0 个答案:

没有答案