Haskell声明并使用;“设置”;数据结构

Haskell声明并使用;“设置”;数据结构,haskell,Haskell,我试图在Haskell中声明一个可以保存元素的自定义“Set”数据类型,因此我尝试了以下声明: data Set e = Set [e] 如何声明此类型的值?若要创建此类型的值,需要将列表传递给构造函数集: > data Set e = Set [e] > let myset :: Set Int; myset = Set [1, 2, 3] 要使用它,可以像任何其他数据类型一样在构造函数上进行模式匹配 > let len :: Set e -> Int; len (

我试图在Haskell中声明一个可以保存元素的自定义“Set”数据类型,因此我尝试了以下声明:

data Set e = Set [e]

如何声明此类型的值?

若要创建此类型的值,需要将列表传递给构造函数

> data Set e = Set [e]
> let myset :: Set Int; myset = Set [1, 2, 3]
要使用它,可以像任何其他数据类型一样在构造函数上进行模式匹配

> let len :: Set e -> Int; len (Set es) = length es
> len myset
3
如果您不在
ghci
,则不需要
let
s

myset :: Set Int
myset = Set [1,2,3]

提示:由于您的
Set e
类型只有一个值构造函数和一个字段,因此您可能希望使用
newtype
而不是
数据
声明(只需将
数据
替换为
新类型
);生成的类型将是等效的,但所涉及的开销比使用
数据时要少。次要术语注释:在函数式编程中,我们很少说“此数据结构的一个实例”,而只是简单地说“此类型的一个值”。谢谢,很好,但我不得不省略“let”让它工作:P@gravysam那里的
表明这是进入GHCi会话的,我在这里看到很多这样的约定。如果要将其放入
.hs
文件并编译,则确实需要删除
let
s。