5

私の頭を悩ませている Haskell に関する質問があります。現在、文字列を削除する関数、つまり文字列"word"のリストから list を["hi", "today", "word", "Word", "WORD"]返す関数を作成する必要があります["hi", "today", "Word", "WORD"]。高階関数は使えず、原始再帰しか使えません。

問題について考えてみると、最初の文字列の先頭を検索し、一致する場合"w"は末尾から次の先頭を比較し、それが一致するかどうかを確認する再帰を使用して解決できるのではないかと考えました"o"。しかし、すぐに、すべての作業の後、完全な文字列を削除することはできないことに気付きました"word"

私の質問は、一度に 1 つの要素を次のようなものと比較するだけでなく、リスト内の文字列全体をどのように比較するかということですremoveWord (x:xs)。それは可能ですか?ソリューションを支援するヘルパー関数を作成する必要がありますか?

4

4 に答える 4

3

空のリストから単語を削除すると、空のリストになります。これは次のように簡単に書くことができます。

removeWord [] _ = []

リストが空でない場合を考えてみましょう。これを と一致させますx:xsガードを使用して、次の 2 つの条件から選択できます。

  1. x削除したい単語です。( x == word)
  2. xは削除したい単語ではありません。( otherwise)
于 2013-05-12T00:27:11.523 に答える