我有一个定义如下的函数:
rmCharsRec :: String -> String -> String
我有一个如下定义的辅助函数rmChar,它删除字符串中出现的所有字符:
rmChar :: Char -> String -> String
rmCharsRec
应删除第一个字符串中每个字符的所有匹配项,并在第二个字符串中返回响应。
我尝试了以下内容:
rmCharsRec :: String -> String -> String
rmCharsRec _ "" = ""
rmCharsRec c:chars str = rmChar ( c str ) ++ rmCharsRec chars
但似乎行不通。我总是收到以下错误:
file.hs:140:1: Parse error in pattern: rmCharsRec
**这不是作业问题*。我只是想通过一系列的练习来学习Haskell,并且我坚持这一点,因为我不明白为什么会出现错误。
有人可以通知我我的代码有什么问题吗?
答案 0 :(得分:4)
如果你想写一个类似c:chars
的模式,你需要像这样输入括号:
rmCharsRec (c:chars) str = ...
这将解决您提到的错误消息,但我认为这不是您需要处理的唯一问题。
答案 1 :(得分:0)
您忘记在模式匹配中围绕c:chars
设置括号。