Moduleprotolude-0.3.5Haskell2010
Protolude.List
- 7 values
- Packageprotolude-0.3.5
- Exports7
- LanguageHaskell2010
- LicenceMIT
- SourceOldList.hs
The groupBy function is the non-overloaded version of group.
When a supplied relation is not transitive, it is important to remember that equality is checked against the first element in the group, not against the nearest neighbour:
groupBy (\a b -> b - a < 5) [0..19][[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19]]
It's often preferable to use Data.List.NonEmpty.groupBy,
which provides type-level guarantees of non-emptiness of inner lists.
Examples
groupBy (/=) [1, 1, 1, 2, 3, 1, 4, 4, 5][[1],[1],[1,2,3],[1,4,4,5]]
groupBy (>) [1, 3, 5, 1, 4, 2, 6, 5, 4][[1],[3],[5,1,4,2],[6,5,4]]
groupBy (const not) [True, False, True, False, False, False, True][[True,False],[True,False,False,False],[True]]