Haskell 定义数据类型

Haskell define a datatype

我正在学习 Haskell 遇到如下情况:

data ABC :: * where
 Empty :: ABC
 Single :: Char -> ABC

以上是什么意思?当我们说 "write a ABC representing something" 是什么意思?

此语法与 Haskell 中的标准数据类型语法相同。特别是,类型 ABC

相同
data ABC = Empty | Single Char

包含 where 子句的语法称为 "GADT syntax",它通过允许 "existential types" 和 "type equalities" 的清晰语法提供了一些额外的表现力。不过,这两个都是相当高级的主题。坚持使用基本类型,直到你得到你的水腿。