Haskellのライブラリ関数anyを実装してみます。
リスト要素のいずれかがが述語をみたすか?判定する...機能を持ちます。
関数を引数とする高階関数として定義してみます。
定義は、
anyの型定義
all :: (a -> Bool) -> [a] -> Bool
引数を二つとり、論理値を返す関数。
その引数は、
”リストの要素一つとり、論理値を返す関数”を引数1
リストを引数2
...とする関数と定義。
再帰の基底条件
リストが空になること。Falseを返す。
再帰のアイディア
リストの先頭要素を取り出し、述語判定実施。
結果を、すべてまとめて論理和演算する
プログラム
再帰的定義による高関数anyの定義
higher_any :: (a -> Bool) -> [a] -> Bool
higher_any f [] = False
higher_any f (x:xs) = f x || higher_any f xs
あきれるホド、イージー。