我有一个关于Haskell的问题一直困扰着我。我目前需要编写一个函数,从字符串列表中删除一个字符串,例如
思考这个问题时,我想也许可以使用递归来解决,你搜索第一个字符串的头部,如果它匹配
我的问题实际上是如何比较列表中的整个字符串而不仅仅是每次比较一个元素,例如:
"word"
在["hi", "today", "word", "Word", "WORD"]
列表中, 返回列表["hi", "today", "Word", "WORD"]
。我不能使用任何高级函数,只能采用基本递归。思考这个问题时,我想也许可以使用递归来解决,你搜索第一个字符串的头部,如果它匹配
"w"
,那么比较尾部的下一个头部,看看它是否匹配"o"
。但很快我意识到,经过所有这些工作后,你将无法删除完整的字符串"word"
。我的问题实际上是如何比较列表中的整个字符串而不仅仅是每次比较一个元素,例如:
removeWord(x:xs)
。这是否可能?我需要编写一个辅助函数来帮助解决吗?
(x:xs)
与["hi", "today", "word", "Word", "WORD"]
进行匹配时,x
变成了"hi"
,而xs
变成了["today", "word", "Word", "WORD"]
。也就是说,这种匹配方式是逐个字符串匹配的,而不是逐个字符匹配的。这种方法之所以行得通,是因为你有一个字符串列表,而不仅仅是一个大字符串。 - Tikhon Jelvis