繁体   English   中英

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

[英]Haskell: How can I create an empty list as an option for a datatype?

在使用ghci编译器的Haskell中,要创建一个为空或具有三元组的数据类型。 我试图创建一个空类型,但是我的数据类型E不允许我使用它。 您如何正确声明这一点?

type Empty = []
data E = Zero Empty | Triple A B C

我不断收到此错误:期望对“ Empty”再输入一个参数,但需要一个类型,但是“ Empty”的类型为“ *-> *”

您正在混合使用类型和数据构造函数,并使用类型构造函数[] (通过别名Empty ,期望使用普通类型)。

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

data [] a = [] | a : ([] a)

这里, []既是类型为* -> *的类型构造函数,又是类型为[a]的空数据构造函数,表示空列表。

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

data E = Zero | Triple A B C

(假设ABC是固定类型。如果要定义任意类型的三元组,则需要参数化E

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

)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM