【发布时间】:2016-07-17 07:07:57
【问题描述】:
在 GHC 解释器中输入以下内容
let describe' all@([x] ++ [y]) = "The first letter of " ++ all ++ " is " ++ [x]
产量
模式中的解析器错误:[x] ++ [y]
为什么 Haskell 无法将模式 all@([x] ++ [y]) 与 "HI" 或 [1,2] 等表达式匹配?
【问题讨论】:
-
基本上他不知道列表的长度是多少,
++实际上是一个函数,所以你不能对它进行模式匹配,例如 Haskell 模式匹配构造函数。 -
可能是因为模棱两可?
-
所以haskell没有看到
[x] + [y],它看到了++的返回值,在这种情况下是一个大小不明确的列表? -
不,它只会看到函数 (
(++)) 并会因语法错误而停在那里 - 就像您的其他问题一样
标签: haskell pattern-matching parse-error