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

问题描述 投票:-1回答:1

在Haskell中使用ghci编译器想要创建一个空的或具有三元组的数据类型。我试图创建一个空类型,但我的数据类型E不允许我使用它。你怎么正确地宣布这个?

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

我一直收到这个错误:期待再有一个参数'空'预期一个类型,但'空'有类'* - > *'

list haskell types declaration ghci
1个回答
3
投票

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

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

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

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

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

data E = Zero | Triple A B C

(假设ABC是固定类型。如果你试图定义三个任意类型,你需要参数化E

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

).

© www.soinside.com 2019 - 2024. All rights reserved.