了解“:?”的含义:&引用;Haskell中的操作员

了解“:?”的含义:&引用;Haskell中的操作员,haskell,parametric-polymorphism,type-constructor,Haskell,Parametric Polymorphism,Type Constructor,我正在学习Haskell,我在书中看到了这个奇怪的数据结构,它看起来是这样的:数据列表a=a:?:(列表a)| Nulo派生Show。据说这应该代表一个有序的列表,但我不认为我真的理解它。我的问题是,代码中“:”符号的含义是什么 我的问题是,:?: 这里定义的数据构造函数是:?:操作符。实际上,在GHCi中,您可以查询(:?:)函数的类型: :t (:?:) (:?:) :: a -> ListaOrd a -> ListaOrd 因此,这与您使用另一个名称完全相同,如: dat

我正在学习Haskell,我在书中看到了这个奇怪的数据结构,它看起来是这样的:
数据列表a=a:?:(列表a)| Nulo派生Show
。据说这应该代表一个有序的列表,但我不认为我真的理解它。我的问题是,代码中“:”符号的含义是什么

我的问题是,
:?:

这里定义的数据构造函数是
:?:
操作符。实际上,在GHCi中,您可以查询
(:?:)
函数的类型:

:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd 
因此,这与您使用另一个名称完全相同,如:

data ListaOrd a = Conso a (ListaOrd a) | Nulo deriving Show
data ListaOrd a=Conso a(ListaOrd a)| numo派生显示

但是这里我们定义了一个名为
(:?:)
的数据构造函数,它也可以与运算符语法一起使用。事实上,您可能已经使用了这样的数据构造函数。例如,
(:)
是列表的数据构造函数。

我假设在那一行前面有
数据?是的,你是对的