[Haskell-cafe] Distributing monadic(?) functions across dyadic functions

Nils Anders Danielsson nad at cs.chalmers.se
Mon Apr 3 05:53:40 EDT 2006

On Sun, 02 Apr 2006, "Jared Updike" <jupdike at gmail.com> wrote:

> Something like "distribute fst (==)" where
>> distribute f op x y = f x `op` f y

A function like this has been suggested for the standard libraries a
couple of times before. Someone suggested the name "on", which I quite

  (*) `on` f = \x y -> f x * f y

>> unionBy (distribute fst (==)) listOfPairs1 listOfPairs2

unionBy ((==) `on` fst) xs ys

I think on makes the code rather readable: union by equality on first.


More information about the Haskell-Cafe mailing list