List Haskell:如何创建一个空列表作为数据类型的选项?

List Haskell:如何创建一个空列表作为数据类型的选项?,list,haskell,types,declaration,ghci,List,Haskell,Types,Declaration,Ghci,在Haskell中,使用ghci编译器希望创建一个空的或具有三元组的数据类型。我试图创建一个空类型,但我的数据类型E不允许我使用它。你如何正确地申报 type Empty = [] data E = Zero Empty | Triple A B C 我一直遇到这样的错误:期望有一个参数“空” 应为类型,但“Empty”具有种类“*->*”您正在混合类型构造函数和数据构造函数,并使用类型构造函数[](通过别名Empty,其中应为普通类型 考虑列表构造函数的伪Haskell定义: data []

在Haskell中,使用ghci编译器希望创建一个空的或具有三元组的数据类型。我试图创建一个空类型,但我的数据类型E不允许我使用它。你如何正确地申报

type Empty = []
data E = Zero Empty | Triple A B C
我一直遇到这样的错误:期望有一个参数“空”
应为类型,但“Empty”具有种类“*->*”

您正在混合类型构造函数和数据构造函数,并使用类型构造函数
[]
(通过别名
Empty
,其中应为普通类型

考虑列表构造函数的伪Haskell定义:

data [] a = [] | a : ([] a)
这里,
[]
既是种类为
*->*
的类型构造函数,也是表示空列表的类型为
[a]
的空数据构造函数

对于您的类型,执行相同的操作:
Zero
只是一个空数据构造函数

data E = Zero | Triple A B C
(假设
A
B
C
是固定类型。如果您试图定义任意类型的三重,则需要参数化
E

data E a b c = Zero | Triple a b c

).

[]
不是类型;它是类型构造函数。与“三重”、“四重”、“五重”类似,如果构造函数实际命名为“Zerople”?=d使用拉丁前缀,它将是“Nilple”,或者为了避免自动更正错误,“Nihilple”。