Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 在这个上下文中,为什么需要带“:”的括号?_Haskell - Fatal编程技术网

Haskell 在这个上下文中,为什么需要带“:”的括号?

Haskell 在这个上下文中,为什么需要带“:”的括号?,haskell,Haskell,在GHC解释器中键入以下内容不会产生错误: let head' (x:_) = x 但如果我们去掉括号: let head' x:_ = x …我们获得: 模式中的分析错误:head' 为什么需要括号?在Haskell中,函数应用程序的优先级高于任何运算符,模式匹配反映了这一点 因此,如果没有括号,head'x:\u被解析为(head'x):\u,这在本文中没有意义,并导致错误。,因为另一种模式将等于(head'x):\u(请记住,应用程序具有最高优先级)这只适用于数据构造函数或数据的可能副

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

let head' (x:_) = x
但如果我们去掉括号:

let head' x:_ = x
…我们获得:

模式中的分析错误:head'


为什么需要括号?

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


因此,如果没有括号,
head'x:\u
被解析为
(head'x):\u
,这在本文中没有意义,并导致错误。

,因为另一种模式将等于
(head'x):\u
(请记住,应用程序具有最高优先级)这只适用于数据构造函数或数据的可能副本