Proposal: Add (&) to Data.Function

Yitzchak Gale gale at
Tue Nov 20 17:59:45 CET 2012

 It is a common idiom to write a sequence of composed combinators in
 reverse order to the way they would be written with ($) or (.). That
 naturally expresses the idea of the combinators as operations being
 applied in the given order.

 This comes up so often, and is commonly used so many times in a single
 expression, that Control.Arrow.>>> is far too wordy, and even a two-
 character operator is awkward.

 Surprisingly, until recently the operator (&) was still not used in any
 of the popular libraries, and its name naturally expresses the idea we are
 looking for. This operator has now been defined in the lens package. We
 hereby propose to move it to its natural home for more general use,

 As in the lens package, we define the operator as a flipped version of
 ($), but with slightly higher precedence for better interaction with
 ($), and with left associativity. This definition has already proven
 useful and convenient even in the presence of the large  and varied corpus
 of combinators and operators in the lens package. (There it was formerly
 known as (%), but that clashed with the usual meaning of (%) from

 infixl 1 &
 (&) :: a -> (a -> b) -> b
 a & f = f a
 {-# INLINE (&) #-}

Discussion period: 2 weeks

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list