【问题标题】:Learning the meaning of " :?: " operator in Haskell学习 Haskell 中“:?:”运算符的含义
【发布时间】:2019-09-27 17:29:06
【问题描述】:

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

【问题讨论】:

  • 我假设那行前面有data
  • 是的,你是对的

标签: haskell parametric-polymorphism type-constructor


【解决方案1】:

我的问题是,:?:是什么意思

您在这里定义一个数据构造函数,它是:?: 运算符。事实上,在 GHCi 中你可以查询 (:?:) 函数的类型:

:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd 

因此,这与您使用其他名称完全相同,例如:

data ListaOrd a = <b>Conso</b> a (ListaOrd a) | Nulo deriving Show

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多