リスト中に,関数 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