我有一個關於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