我有自定义数据类型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
谢谢。