【发布时间】:2015-12-11 19:19:27
【问题描述】:
我正在尝试在函数 Split 中匹配 **String Newline String** 模式。
split::String -> [String]
split[] = []
split (x++'\n':xs) = [x]++split(xs)
我收到此错误:
Parse error in pattern: x ++ ('\n' : xs)
我在这里做错了什么?
我知道还有其他方法可以达到相同的结果,但我想了解这种模式有什么问题。顺便说一句,我对 Haskell 还很陌生。
【问题讨论】:
-
您只能在构造函数上进行模式匹配。正如你所说,
++是一个函数。 -
如果你能详细解释你想让你的函数做什么,那将是非常有帮助的。你写的代码好像没有多大意义,所以我说不出来。
-
好问题!早在 89 年,我构建了一种语言,它实际上允许 elem x (_ ++ x : _) = True; elem _ _ = 错误。我想念它。
-
@pigworker 库里怎么样?
-
@ErikAllik 寻找可以窃取的想法总是值得的。我当然希望看到我们碰巧在功能上呈现的关系的输入输出模式更具流动性。