为什么这种类型的声明不起作用?

时间:2009-12-31 05:59:47

标签: haskell

我正在尝试创建一个“人”类型,每个人都有性别和名字。

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'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:10)

问题在于您在记录语法中使用大写。代码应如下所示:

data Person = Person { sex :: Sex, name :: Name }...

尝试一下,代码似乎至少可以编译。由于“性别”和“名称”不是类型(而“性别”和“名称”都是),你不能使第一个字母大写。