Haskell使用辅助函数递归删除字符

时间:2015-11-08 19:29:36

标签: string haskell recursion ghci

我有一个定义如下的函数:

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,并且我坚持这一点,因为我不明白为什么会出现错误。

有人可以通知我我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:4)

如果你想写一个类似c:chars的模式,你需要像这样输入括号:

rmCharsRec (c:chars) str = ...

这将解决您提到的错误消息,但我认为这不是您需要处理的唯一问题。

答案 1 :(得分:0)

您忘记在模式匹配中围绕c:chars设置括号。