Haskell 中缀函数应用优先级

发布于 2024-12-15 20:30:41 字数 249 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心作怪 2024-12-22 20:30:41

Haskell 98 报告有一个关于 操作员应用程序 清除它:

运算符可以是运算符符号,例如 + 或 $$,也可以是
用重音符号(反引号)括起来的普通标识符,例如
`op`。例如,不要编写前缀 application op xy,
可以编写中缀应用程序 x `op` y。如果没有固定性声明
为“op”指定,则默认为最高优先级并保留
关联性(参见第 4.4.2 节)。

正如其他答案所示,该报告还有一个关于固定性声明的部分允许您定义自己的固定性,例如:

infixl 7 `op`

The Haskell 98 Report has a section on Operator Applications that clears it up:

An operator is either an operator symbol, such as + or $$, or is an
ordinary identifier enclosed in grave accents (backquotes), such as
`op`. For example, instead of writing the prefix application op x y,
one can write the infix application x `op` y. If no fixity declaration
is given for `op` then it defaults to highest precedence and left
associativity (see Section 4.4.2).

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 7 `op`
一人独醉 2024-12-22 20:30:41

如果没有给出明确的固定性声明,例如

infixl 7 `quot`

反引号中缀函数的默认固定性为infixl 9,那么将像具有相同固定性的任何其他中缀运算符一样对待。

If no explicit fixity declaration is given, as e.g.

infixl 7 `quot`

a backticked infix function has the default fixity of infixl 9, so will be treated like any other infix operator with the same fixity.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文