dem*_*emi 24 haskell function operators infix-notation operator-precedence
我们f x y = x * y
.我们可以通过两种方式应用此函数:f 5 6
或者,使用中缀表示法5 `f` 6
.运算符规则是否适用于最后一个表达式?这个应用程序有什么优先权?它只是另一种形式的功能应用程序,它也具有最高优先级吗?
我想编译器会看到这种特殊形式(由于``
和/或名称以字母(?)开头),并且实际上将其视为普通函数应用程序,而不是将其视为运算符.
Nic*_* Wu 24
运算符是运算符符号,例如+或$$,或者是用重写符(反引号)括起来的普通标识符,例如`op`.例如,不是编写前缀应用程序op xy,而是可以编写中缀应用程序x`op`y.如果没有为'op`给出固定声明,那么它默认为最高优先级和左关联性(参见第4.4.2节).
如其他答案所示,报告还有一个关于Fixity声明的部分,允许您定义自己的固定性,例如:
infixl 7 `op`
Run Code Online (Sandbox Code Playgroud)
Dan*_*her 10
如果没有给出明确的固定性声明,例如
infixl 7 `quot`
Run Code Online (Sandbox Code Playgroud)
反向中缀函数具有默认的固定性infixl 9
,因此将被视为具有相同固定性的任何其他中缀运算符.
归档时间: |
|
查看次数: |
10511 次 |
最近记录: |