首页 > 解决方案 > haskell 中非记录数据构造函数的术语

问题描述

data A b c = B | C b | H { b :: b, c :: c }

AFAIK,B称为空元构造函数C称为一元构造函数,而H称为记录。

B但是,包含和的任意数量构造函数的术语是什么C?有没有比非记录构造函数更好的东西?

标签: haskellfunctional-programming

解决方案


我不确定他们应该得到一个特殊的名字。记录构造函数基本上只是一个非记录构造函数,具有一些自动定义的访问器函数和方便的语法支持。在上面的示例中,我会考虑H二进制构造函数或 arity 2 的构造函数,因为我可以像任何其他二进制构造函数一样构造和破坏它:

let H a b = H (1+1) (2+2) in (a,b)

值得一提的是,Haskell98 报告只是称它们为“带有字段标签的构造函数”和“没有字段标签的构造函数”,并且非常清楚地表明,即使有字段标签,它们仍然是“arity k 的数据构造函数”。


推荐阅读