use*_*370 9 haskell functional-programming terminology algebraic-data-types
如果我有一个Haskell ADT,例如:
data Foo
= A Int Double
| B Bool [Integer]
| C (Maybe String) Float
Run Code Online (Sandbox Code Playgroud)
的A
,B
和C
被称为数据构造 ; 有时作为价值构造者.但是正确的名称是什么:
B Bool [Integer]
; 和Double
in A
或[Integer]
in B
?Sum*_*ndo 11
阅读Haskell98报告(http://www.haskell.org/onlinereport/decls.html)中的第4.2节:
B Bool [Integer]
可能最正确地称为"构造函数声明"(对于被调用的构造函数B
)Double
in 这样的东西A
被称为字段声明(虽然简单地称它为字段也应该没问题).data Foo = A Int Double
^^ Type Constructor "data Foo"
^ value Constructor "A"
^^ Component "Int" and "Double"
Run Code Online (Sandbox Code Playgroud)
一个 | B 通常被称为替代方案或案例。抱歉,图表很糟糕。