数据构造函数的Haskell示例中"Pt"的含义

Jan*_*ary 2 constructor haskell types

以下示例来自Hudak,Peterson和Fasel的"对Haskell 98的温和介绍":

data Point a = Pt a a
Run Code Online (Sandbox Code Playgroud)

这是什么'Pt'?它从何而来?这是什么意思?之前已经定义过,还是我们在这里定义它?它突然出现在文本中,之前没有被提及,谷歌的"Pt Haskell"在Portugese返回Haskell文档;-)

编辑:感谢@unhammer的回复,我现在看到对另一个问题的回答很好地解释了问题:这里

unh*_*mer 5

Pt是你自己组成的名字.您可以使用它来创建新的Point.

?> data Point a = Pt a a
?> let p = Pt 1 2
?> :t p
p :: Num a => Point a
Run Code Online (Sandbox Code Playgroud)

(对于这些单构造函数数据,您还经常会看到它们的名称与类型相同,例如data Point a = Point a a.)

  • @January确实,Haskell数据类型定义符号是紧凑的,但可能会让初学者稍微混淆 - 在这里,经常看到这种混淆.如果您愿意,可以打开`GADTSyntax`扩展并使用更详细的符号`数据点a,其中Pt :: a - > a - >点a`,其中您明确地为'Pt`提供类型,就像它是一个功能签名.这与紧凑型100%相当,也可用于多个构造函数.我认为初学者的语法更清晰(即使他们没有阅读过教程). (5认同)