我可以在Haskell中定义(:: :)吗?它是否以某种方式受到保护?

Fil*_*und 0 haskell

我收到了这个错误,但据我所知,它应该有效.我错过了什么?

Not in scope: data constructor ':::'
        |
        | (:::) = cons
        | ^^^^^
Run Code Online (Sandbox Code Playgroud)

infixr 5 :::声明也有类似的错误.

Mic*_*ski 5

你可能错过了

以冒号开头的运算符符号是构造函数.

- Haskell 2010语言报告

在构造函数声明中使用应该起作用:

data Foo a b = a ::: b
Run Code Online (Sandbox Code Playgroud)

  • @FilipHaglund实际上甚至在Haskell 1.0中,但为什么不链接到当前的报告呢? (3认同)