Haskell 使用辅助函数递归删除字符
Haskell recursively removing chars using helper function
我有一个函数定义如下:
rmCharsRec :: String -> String -> String
我有一个辅助函数 rmChar 定义如下,它删除字符串中出现的所有字符:
rmChar :: Char -> String -> String
rmCharsRec
应该删除第一个字符串、第二个字符串和 return 响应中每个字符的所有出现。
我试过以下方法:
rmCharsRec :: String -> String -> String
rmCharsRec _ "" = ""
rmCharsRec c:chars str = rmChar ( c str ) ++ rmCharsRec chars
但是好像不行。我总是收到以下错误:
file.hs:140:1: Parse error in pattern: rmCharsRec
**这不是作业题*。我只想从一组练习中学习 Haskell,但由于不明白为什么会出错,所以我坚持这样做。
有人可以告诉我我的代码有什么问题吗?
如果你想写一个像 c:chars
这样的模式,你需要像这样把它放在方括号中:
rmCharsRec (c:chars) str = ...
这将解决您提到的错误消息,但我认为这不是您需要处理的唯一问题。
您忘记在模式匹配中将 c:chars
括起来。
我有一个函数定义如下:
rmCharsRec :: String -> String -> String
我有一个辅助函数 rmChar 定义如下,它删除字符串中出现的所有字符:
rmChar :: Char -> String -> String
rmCharsRec
应该删除第一个字符串、第二个字符串和 return 响应中每个字符的所有出现。
我试过以下方法:
rmCharsRec :: String -> String -> String
rmCharsRec _ "" = ""
rmCharsRec c:chars str = rmChar ( c str ) ++ rmCharsRec chars
但是好像不行。我总是收到以下错误:
file.hs:140:1: Parse error in pattern: rmCharsRec
**这不是作业题*。我只想从一组练习中学习 Haskell,但由于不明白为什么会出错,所以我坚持这样做。
有人可以告诉我我的代码有什么问题吗?
如果你想写一个像 c:chars
这样的模式,你需要像这样把它放在方括号中:
rmCharsRec (c:chars) str = ...
这将解决您提到的错误消息,但我认为这不是您需要处理的唯一问题。
您忘记在模式匹配中将 c:chars
括起来。