我有一个关于Haskell的问题,它一直在困住我的大脑。我目前需要编写一个从字符串列表中删除字符串的函数,即"word"
["hi", "today", "word", "Word", "WORD"]
返回列表["hi", "today", "Word", "WORD"]
。我不能使用任何高阶函数,只能使用原始递归。从Haskell中的字符串列表中删除一个字符串
有关问题的思考,我想,也许,你搜索的第一个字符串的头部,如果匹配"w"
然后从尾下一头进行比较,看是否匹配"o"
我可以用递归解决。但后来我很快意识到,毕竟这些工作,你将无法删除完整的字符串"word"
。
我的问题确实是如何比较列表中的整个字符串,而不是仅将某个元素与某个时间点的元素进行比较:removeWord (x:xs)
。它甚至有可能吗?我是否必须编写帮助函数来帮助解决方案?
你的列表中包含字符串其实并不重要这里。尝试解决问题,例如首先列出“Int”,那么它应该只是改变类型签名以使其适用于字符串列表。 – hammar 2013-05-12 00:28:15
将'(x:xs)'与'[“hi”,“today”,“word”,“Word”,“WORD”]匹配时,'x'变成'“hi”'而'xs'变成'[“今天”,“单词”,“单词”,“文字”]'。也就是说,它通过字符串匹配字符串,而不是逐个字符。这是有效的,因为你有一个* list *的字符串,而不仅仅是一个大字符串。 – 2013-05-12 00:28:31
哦,我明白了!非常感谢你这是它给我带来麻烦的地方。我认为这只是第一个元素,而不是整个单词。这清除了一切! – Phirip 2013-05-12 00:44:54