spa*_*e78 3 haskell pattern-matching
所以使用GHCI,这些语句对我来说是等价的,因为end0中的列表表达式是end1中列表表达式的语法糖:
let end0 [x,y,z] = z
let end1 (x:y:z:[]) = z
Run Code Online (Sandbox Code Playgroud)
但是从end1的模式中取出parens会给我一个"模式中的Parse错误"错误.那为什么呢?parens在模式匹配中是否具有特殊含义,或者它是一个优先级问题,就像我通常认为当我使用parens与运算符时一样?
它与优先权有关.
函数优先于:,因此GHC会推断您只为x定义函数.这就是为什么你必须将它全部包装在parens中.