List 列表中的Haskell列表

List 列表中的Haskell列表,list,haskell,types,List,Haskell,Types,您好,您有一个问题,如何在Haskell用户列表中创建这样的用户: list = [("Frank",24,[wall, door],1),("Ann",45,[window],0), ("Claudia",44,[window, bed],2), ("Pedro"77,[wall],1)] 我试过这种方法,但不起作用: type Home = (Homename) type Homename = String t

您好,您有一个问题,如何在Haskell用户列表中创建这样的用户:

list = [("Frank",24,[wall, door],1),("Ann",45,[window],0),
("Claudia",44,[window, bed],2), ("Pedro"77,[wall],1)]
我试过这种方法,但不起作用:

type Home = (Homename)
type Homename = String
type Person = (Name, Age, [Home], Num)
type Name = String
type Age = Integer
type Num = Integer
list :: [Person]
list = [("Frank",24,[wall, door],1),("Ann",45,[window],0),
("Claudia",44,[window, bed],2), ("Pedro",77,[wall],1)]
错误:表达式中出现语法错误(意外的“;”,可能是由于布局不正确)

字符串必须在“字符串”中。 此外,您不能将类型命名为Num,它已经是序曲中的保留字

您可以将其重命名为Numb

type Home = (Homename)
type Homename = String
type Person = (Name, Age, [Home], Numb)
type Name = String
type Age = Integer
type Numb = Integer
list :: [Person]
list = [("Frank"  ,24,["wall", "door"],1),
        ("Ann"    ,45,["window"],0),
        ("Claudia",44,["window", "bed"],2),
        ("Pedro"  ,77,["wall"],1)]
您还需要使函数体在所有行的标题之后开始

这将给您一个错误,因为第二行从作为标题的位置0开始

list :: [Person]
list = [("Frank"  ,24,["wall", "door"],1),
("Ann"    ,45,["window"],0),
("Claudia",44,["window", "bed"],2),
("Pedro"  ,77,["wall"],1)]

没有
在您发布的代码中。你确定那是产生错误的代码吗?是的,那是代码不知道他为什么说“;”不能复制。请发一个帖子。尽量把问题弄清楚,因为它不是很清楚。
错误,因为以
开头的行(“Claudia”,44…
应该比前一行缩进得多。因为它与前一行缩进得一样,它实际上启动了一个新的定义“就好像这些行之间有一个分隔符”。现代GHC没有提到隐含的
,因为这让人困惑。好的,谢谢你,它起作用了!