major

リスト中に,関数 f(述語って言うの?)を満たす要素のほうが多ければ True をかえす,というのを考えた。all と any の中間みたいなもの。

 major f xs = (length $ filter f xs) > (length $ filter (not . f) xs)

結果。

 *Main> major odd [1..5]
 True
 *Main> major even [1..5]
 False


地道に数を数えるならこうかな。

 major f xs = fst count > snd count
   where count = foldl (\(ct, cf) x -> if f x then (ct+1, cf) else (ct, cf+1)) (0,0) xs
 *Main> major odd [1..5]
 True
 *Main> major even [1..5]
 False