Proposal: Adding on
Nils Anders Danielsson
nad at cs.chalmers.se
Thu Nov 2 12:00:36 EST 2006
The function on defined by
(*) `on` f = \x y -> f x * f y
is convenient when using functions like sortBy: sortBy (compare `on`
fst), for example. It also makes the code more readable.
Furthermore I consider on to be above the Fairbairn threshold, since
* we get rid of two lambdas,
* we get rid of the duplication of p,
* on has some nice algebraic properties (documented in the patch)
* and, most importantly, it is easier at a glance to understand
(*) `on` p than to understand \x y -> p x * p y (assuming one knows
The main question seems to be which module to put the function in.
Based on previous discussion on the libraries list I suggest creating
a new module Control.Function containing on plus (initially) some
other combinators (working solely on and with functions) from the
Deadline for discussion: 2006-11-09.
Trac ticket number: 979.
More information about the Libraries