【问题标题】:Where is the source for: "Function application has higher precedence than infix operators" [Haskell]来源:“函数应用程序的优先级高于中缀运算符”[Haskell]
【发布时间】:2017-02-06 14:52:08
【问题描述】:

我正在学习 Haskell 中的运算符优先级。网络上的一些地方提到函数应用程序的优先级高于运算符,但我找不到确切的来源。

这是A Gentle Introduction To Haskell 中提到的一个:

函数应用的优先级高于任何中缀运算符

Haskell 98 Report 中有一段提到它:

普通构造函数应用的优先级高于中缀构造函数应用

确定的来源在哪里?我希望它包含在 Haskell 98 报告中,也许我没有正确阅读它。

【问题讨论】:

  • 函数申请是个特例,但一般情况下,你可以在ghci上使用:i命令检查这个权限。例如,:i (.) 会告诉函数组合是右关联的,优先级等于 9 (infixr 9)。

标签: haskell operator-precedence


【解决方案1】:

您可以在 EBNF 中找到here

exp^10 -> ...
        | fexp

fexp -> [fexp] aexp

这基本上意味着函数应用程序的优先级为 10,高于您允许给操作员的任何优先级。

【讨论】:

    【解决方案2】:

    Haskell 报告 本身就是一个权威参考,所以你找到的引用就足够了。

    您也可以在语法中找到相同的信息。

    fexp -> [fexp] aexp
    exp_10 -> ... | fexp
    

    您可以看到函数应用程序的优先级为“10”,而所有中缀/前缀运算符都是 9 或更低。

    【讨论】:

    • 对,虽然 OP 中的特定 Report 引用似乎是指 类型运算符 而不是值级中缀运算符。
    • 是的,我注意到......但是,这些信息可能对 OP 最有帮助,而不是对我。
    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 2011-08-30
    • 2014-06-26
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多