了解 Haskell 中“:?:”运算符的含义
Learning the meaning of " :?: " operator in Haskell
我正在学习Haskell,我刚刚在我的书上看到了这个奇怪的数据结构,它看起来像这样:data ListaOrd a = a :?: (ListaOrd a) | Nulo deriving Show
。据说这应该代表一个有序列表,但我认为我并没有真正理解它。我的问题是,该代码中“:?:”符号的含义是什么?
My question is, what is the meaning of :?:
您在此处定义 作为:?:
运算符的数据构造函数。事实上,在 GHCi 中你可以查询 (:?:)
函数的类型:
:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd
因此,这与您使用其他名称完全相同,例如:
data ListaOrd a = <b>Conso</b> a (ListaOrd a) | Nulo deriving Show
但这里我们定义了一个名为 (:?:)
的数据构造函数,它也可以与运算符语法一起使用。事实上,您可能已经使用过此类数据构造函数。例如 (:)
是列表的数据构造函数。
我正在学习Haskell,我刚刚在我的书上看到了这个奇怪的数据结构,它看起来像这样:data ListaOrd a = a :?: (ListaOrd a) | Nulo deriving Show
。据说这应该代表一个有序列表,但我认为我并没有真正理解它。我的问题是,该代码中“:?:”符号的含义是什么?
My question is, what is the meaning of
:?:
您在此处定义 作为:?:
运算符的数据构造函数。事实上,在 GHCi 中你可以查询 (:?:)
函数的类型:
:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd
因此,这与您使用其他名称完全相同,例如:
data ListaOrd a = <b>Conso</b> a (ListaOrd a) | Nulo deriving Show
但这里我们定义了一个名为 (:?:)
的数据构造函数,它也可以与运算符语法一起使用。事实上,您可能已经使用过此类数据构造函数。例如 (:)
是列表的数据构造函数。