在Haskell中使用管道符号定义运算符

时间:2014-05-22 21:30:10

标签: haskell operators symbols

我想知道是否可以这样做:

data NumeroConBase = NumeroConBase { num :: Integer, base :: Integer}

(|) :: String -> Int -> NumeroConBase

基本上,我想写344D|5并与之合作......

我在"|" ...

上收到错误消息

1 个答案:

答案 0 :(得分:13)

|是极少数符号序列之一,不能在Haskell中用作运算符名称。 full list为:..:::=\|<-->@~=>和评论分隔符。所有这些都具有特殊的句法意义。在您的情况下,单独的管道用于警卫和data声明。

(细节:限制仅适用于序列单独使用;因此@@-->之类的工作正常。此外,只能使用以:开头的运算符作为data声明中的中缀构造函数。)