bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskell ドリル14 filter関数

1.概略

Lispを使っている頃、filterという関数もよく利用した。この関数は、与えられたリストから、条件を満たしたものだけをリストとして出力する。mapと同じように、第一引数は関数であり、第二引数はリストである。

2.例題

問題:自然数のリストから、偶数だけを取り出す。
これは次のようにプログラムできる。

Prelude> take 10 $ filter (\ x -> mod x 2 == 0) [1,2..]
[2,4,6,8,10,12,14,16,18,20]

あるいは次のようにしてもよい。

 take 10 $ filter even [1,2..]
[2,4,6,8,10,12,14,16,18,20]

3.問題

filterを用いて次の問題の解を求めなさい。

問題1:文字のリストからブランクを取り除く。

問題2:文字のリストから文字’a’を取り除く。

問題3:数のリストから3の倍数を取り除く。

問題4:文字のリストから大文字を取り除く。

問題5:文字のリストから、2あるいは3の倍数を取り除く。

問題6:数と文字の対を要素とするリストから、例えば[(3,’s’), (36,’d’),…]、その数が10以上である対を取り除く。

問題7:苗字のリストから”Tanaka”を取り除く。

問題8:苗字のリストから文字’S’で始まる苗字を取り除く。

問題9:苗字と成績(100点満点)の対を要素とするリストから、成績が80点以上の対を取り出す。

問題10:苗字と数学と英語の成績(それぞれ100点満点)のタプルから、合計点が100点未満のタプルを取り出す。