group-with-0.1.0.0: Classify objects by key-generating function, like SQL GROUP BY

Copyright(c) Uli Köhler 2014
LicenseApache License v2.0
Maintainerukoehler@techoverflow.net
Stabilityprovisional
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.GroupWith

Description

A collection of grouping utility functions. For a given function that assigns a key to objects, provides functions that group said objects into a multimap by said key.

This can be used similarly to the SQL GROUP BY statement.

Provides a more flexible approach to GHC.Exts.groupWith

groupWith (take 1) ["a","ab","bc"] == Map.fromList [("a",["a","ab"]), ("b",["bc"])]

Synopsis

Documentation

type MultiMap a b = Map a [b] Source

groupWith Source

Arguments

:: Ord b 
=> (a -> b)

The function used to map a list value to its key

-> [a]

The list to be grouped

-> MultiMap b a

The resulting key --> value multimap

Group values in a list by a key, generated by a given function. The resulting map contains for each generated key the values (from the given list) that yielded said key by applying the function on said value.

groupWithMultiple Source

Arguments

:: Ord b 
=> (a -> [b])

The function used to map a list value to its keys

-> [a]

The list to be grouped

-> MultiMap b a

The resulting map

Like groupWith, but the identifier-generating function may generate multiple keys for each value (or none at all). The corresponding value from the original list will be placed in the identifier-corresponding map entry for each generated identifier. Note that values are added to the

groupWithUsing Source

Arguments

:: Ord b 
=> (a -> c)

Transformer function used to map a value to the resulting type

-> (c -> c -> c)

The combinator used to combine an existing value for a given key with a new value

-> (a -> b)

The function used to map a list value to its key

-> [a]

The list to be grouped

-> Map b c

The resulting key --> transformed value map

Like groupWith, but uses a custom combinator function