1

Haskellを学び始めたばかりです。

私は単語のリストを持っていて、そうしなければなりません

  1. すべての単語の最初の文字を削除してから
  2. 文字「a」で始まるすべての単語を削除し、
  3. 残りの単語をまとめます。

1 と 3 はできたのですが、「あ」で始まる単語を削除する方法がわかりません。

これまでのところ、次のようになります。

concat(--remove words with a--(map (drop 1) ["Tree","House","Monkey","Haskell","Informatik"]))

Frerich Raabe さん、ありがとうございます。

4

1 に答える 1

7

逆に考えたほうがいいです。で始まらない単語を保持するようにリストをフィルタリングします'a'。これは、標準関数を使用して行うことができますfilter

filter :: (a -> Bool) -> [a] -> [a]

の最初の引数は、保持したい単語と削除したい単語をfilter返す関数で、2 番目の引数はリストです。TrueFalse

filter doesNotBeginWithA (... your list goes here ...)

次に、この関数を実装する必要があります。これは、単純なパターン マッチングを使用して行うことができます。

doesNotBeginWithA :: String -> Bool
doesNotBeginWithA xs = ...

関数合成に精通している場合、 を使用notしてロジックを反転することは、やや慣用的です。少し一般化することもできます。

filter (not . beginsWith 'a') (...)

代わりに、次の関数を提供する必要があります。

beginsWith :: Char -> String -> Bool
beginsWith c xs = ...
于 2013-05-06T19:19:51.950 に答える