为什么这种类型的声明不起作用?
问题描述:
我试图创建一个'人'类型,其中每个人都有一个性别和一个名字。为什么这种类型的声明不起作用?
data Sex = Sex Char deriving Show
male = Sex 'M'
female = Sex 'F'
data Name = Name [Char] deriving Show
data Person = Person {
Sex :: Sex,
Name :: Name
} deriving (Show)
当我尝试在ghci中加载此我只是得到了无益的错误parse error on input 'Sex'
我在做什么错在这里?
只是一个随机PS,如果你定义这个就像是一个布尔数据值,那么它的可能性就会小得多,而且错误也会减少。例如,如果有人用(性别'Z')调用函数怎么办?我会建议如下:data Sex =女| |男性派生(...) – codebliss 2009-12-31 07:46:03
@codebliss,谢谢,我忘记了类型的'|'技巧。 (我是*真的* n00bish n00b。) – friedo 2009-12-31 07:52:30
它不是你问的问题,但你会更好地将Sex定义为“data Sex = Male | Female”。 – 2010-01-03 20:10:34