【发布时间】:2016-07-17 06:42:17
【问题描述】:
在 GHC 解释器中输入以下内容不会产生错误:
let head' (x:_) = x
但是如果我们去掉括号:
let head' x:_ = x
...我们得到:
模式中的解析错误:head'
为什么需要括号?
【问题讨论】:
-
因为其他模式将等于
(head' x) : _(请记住应用程序具有最高优先级)并且这只对数据构造函数有意义
标签: haskell
在 GHC 解释器中输入以下内容不会产生错误:
let head' (x:_) = x
但是如果我们去掉括号:
let head' x:_ = x
...我们得到:
模式中的解析错误:head'
为什么需要括号?
【问题讨论】:
(head' x) : _(请记住应用程序具有最高优先级)并且这只对数据构造函数有意义
标签: haskell
在 Haskell 中,函数应用的优先级高于任何运算符,而模式匹配反映了这一点。
因此,如果没有括号,head' x:_ 将被解析为 (head' x):_,这在这种情况下没有意义,并且会导致错误。
【讨论】: