Haskell将String划分为Lists

时间:2016-03-06 23:09:00

标签: string haskell readfile

我已经在这个项目上工作了很长时间,只想询问是否可以将字符串分成一组列表。目前我有

type Rate = (String,Int)
type Film  =  (String,String,Int,[Rate])

testDatabase :: [Film]
testDatabase = [("Blade Runner","Ridley Scott",1982,[("Amy",5), ("Bill",8), ("Ian",7), ("Kevin",9), ("Emma",4), ("Sam",7), ("Megan",4)]),("The Fly","David Cronenberg",1986,[("Megan",4), ("Fred",7), ("Chris",5), ("Ian",0), ("Amy",6)])...

我已经定制了很多功能,可以使用[Film]类型。

当我尝试从文本文件导入数据时出现了我的问题。

使用readFile我只能阅读

[("Blade Runner","Ridley Scott",1982,[("Amy",5), ("Bill",8), ("Ian",7), ("Kevin",9), ("Emma",4), ("Sam",7), ("Megan",4)]),("The Fly","David Cronenberg",1986,[("Megan",4), ("Fred",7), ("Chris",5), ("Ian",0), ("Amy",6)]) 

as

"[("Blade Runner","Ridley Scott",1982,[("Amy",5), ("Bill",8), ("Ian",7), ("Kevin",9), ("Emma",4), ("Sam",7), ("Megan",4)]),("The Fly","David Cronenberg",1986,[("Megan",4), ("Fred",7), ("Chris",5), ("Ian",0), ("Amy",6)])" 

并且我不知道是否有办法让readFile读取不同的数据类型而不是字符串,或者将此字符串转换为适合数据类型。

任何建议都会非常感激。对不起,如果我没有说好问题。总之,有没有办法让字符串只是数据才能实现到一个类型中,或者readFile是否有String以外的其他方式?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用read

main = do
  string <- readfile "data.txt"
  let testDatabase = read string :: [Film]