何度も似たようなの書いては失くしちゃうので、メモ。 というか、標準のData.List.groupってあれ使い道あるのか? module Data.List.Missing where import Data.Maybe (fromMaybe) {- | 分類関数と加算器をつかってリストを集計する 分類のみ >>> groupBy' (`mod` 2) (flip (:)) [] [0..10] [(0,[10,8,6,4,2,0]),(1,[9,7,5,3,1])] 集計のみ >>> groupBy' id (\x _ -> x + 1) 0 [0,0,2,3,1,2,6] [(6,1),(2,2),(1,1),(3,1),(0,2)] 投票から得票数を求める例 >>> groupBy' snd (\x _ -> x + 1) 0 [(0,1),(1,0),(2,3),(3,0),(4,