ADT名称.什么是“左a”,然后是什么是“a”,在哈斯克尔



如果我有一个Haskell ADT,例如:

data Foo
 = A Int Double
 | B Bool [Integer]
 | C (Maybe String) Float

ABC被称为数据构造函数;有时作为值构造函数。但是什么是正确的名称:

  1. "行/备选方案":例如B Bool [Integer];以及
  2. "行/替换项"的"字段/元素":例如A中的Double,或CCD_ 8中的CCD_

阅读Haskell98报告第4.2节(http://www.haskell.org/onlinereport/decls.html(:

  1. 这并没有明确说明,但B Bool [Integer]可能被最正确地称为"构造函数声明"(对于名为B的构造函数(
  2. A中的Double这样的东西被称为字段声明(尽管简单地将其称为字段也应该可以(
data Foo = A Int Double
     ^^ Type Constructor "data Foo"
           ^ value Constructor "A"
             ^^ Component "Int" and "Double"

A|B通常被称为备选方案或案例。抱歉这张糟糕的图表。

来源:真实世界Haskell ch3

最新更新