9

当使用度数的角度时,我想定义度数符号 ( °) 用作后缀运算符。目前,我使用这条线(在 GHCi 中):

let o = pi/180

并像这样使用它:

tan(11*o)

但我只想去:

tan 11°

这更清楚。度数运算符的优先级应高于 '<code>tan' 和其他函数。

我得到的最接近的是:

let (°) x _ = x*pi/180

像这样使用:

tan(11°0)

但默认优先级意味着仍然需要括号,并且使用虚拟数字,这种替代方法比我目前使用的更糟糕。

4

2 回答 2

17

你不能,至少在报告中定义的 Haskell 中是这样。但是,有一个允许后缀运算符的 GHC 扩展

不幸的是,这并不能满足您的所有需求。特别是,它仍然需要括号,一元否定运算符经常这样做。

于 2013-04-24T15:45:16.053 回答
3

查看fixity declarations,它允许您更改中缀运算符的优先级。注意不要将优先级设置得太高,否则其他运算符的行为将无法达到预期。

例如:

infixl 7 °
(°) x _ = x*pi/180

编辑:啊,@Daniel Fischer 是对的 - 这不适用于您当前的需求,因为函数应用程序具有最高优先级

于 2013-04-24T15:44:53.013 回答