Haskell 中缀函数应用优先级
让fxy = x * y
。我们可以通过两种方式应用此函数:f 5 6
,或者使用中缀表示法,5 `f` 6
。运算符规则是否适用于最后一个表达式?该应用程序将具有什么优先权?它是否只是函数应用的另一种形式,那么它也将具有最高优先级吗?
我想编译器会看到这种特殊形式(由于 ``
和/或以字母(?)开头的名称),并且实际上将其视为普通函数应用程序,而不是将其视为运算符。
Let f x y = x * y
. We can apply this function in two ways: f 5 6
, or, using infix notation, 5 `f` 6
. Do the operator rules apply to this last expression? What precedence will this application have? Is it just another form of function application, and so will it also have the highest precedence?
I suppose that the compiler sees this special form (due to ``
and/or the name starting with a letter(?)), and actually treats this as ordinary function application, instead of considering it an operator.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Haskell 98 报告有一个关于 操作员应用程序 清除它:
正如其他答案所示,该报告还有一个关于固定性声明的部分允许您定义自己的固定性,例如:
The Haskell 98 Report has a section on Operator Applications that clears it up:
As indicated by the other answers, the Report also has a section on Fixity Declarations that allows you to define your own fixity, for example:
如果没有给出明确的固定性声明,例如
反引号中缀函数的默认固定性为infixl 9,那么将像具有相同固定性的任何其他中缀运算符一样对待。
If no explicit fixity declaration is given, as e.g.
a backticked infix function has the default fixity of
infixl 9
, so will be treated like any other infix operator with the same fixity.