【问题标题】:Why are parentheses needed with `:` in this context?在这种情况下,为什么 `:` 需要括号?
【发布时间】:2016-07-17 06:42:17
【问题描述】:

在 GHC 解释器中输入以下内容不会产生错误:

let head' (x:_) = x

但是如果我们去掉括号:

let head' x:_ = x

...我们得到:

模式中的解析错误:head'

为什么需要括号?

【问题讨论】:

  • 因为其他模式将等于(head' x) : _(请记住应用程序具有最高优先级)并且这只对数据构造函数有意义

标签: haskell


【解决方案1】:

在 Haskell 中,函数应用的优先级高于任何运算符,而模式匹配反映了这一点。

因此,如果没有括号,head' x:_ 将被解析为 (head' x):_,这在这种情况下没有意义,并且会导致错误。

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多