
I'm a strong +1 for accepting this proposal as it stands.
I'm decidedly lukewarm / a weak -1 on switching it to (|>).
Another popular color of this bikeshed, (#) as is used in diagrams,
interacts very poorly with MagicHash and has a very high precedence that
ruins it for most dsl purposes.
We had it as (|>) in lens for a while and it didn't read well. It is often
used in long compositions and the extra character adds up when chained
several times.
-- >>> zipper ("hello","world") & down _1 & fromWithin traverse &
focus .~ 'J' & rightmost & focus .~ 'y' & rezip
-- ("Jelly","world")
isoRules = defaultRules
& handleSingletons .~ True
& singletonRequired .~ True
& singletonAndField .~ True
Both of those examples read much better with & than (|>).
We had switched to % from (|>) to be consistent with the other (+=) (*=)
operators where (%=) was being read as 'mod-equals' as a bit of a pun, and
could be seen as the application of the % operator to the target.
However this led to issues with a vocal minority who objected to it
changing the meaning of 4 % 3 on lambdabot when combined with NumInstances.
We converted to (&) because of its incredible terseness and general lack of
use across hackage. For DSL purposes, to me it is key that this operator be
as succinct as possible and (&) is remarkably underutilized in haskell
libraries today, due to the fact that (|) is taken by syntax, and our
C-inspired brains tend to pair them.
-Edward
On Tue, Nov 20, 2012 at 1:27 PM, Michael Sloan
And the results of the IRC discussion on lens: https://github.com/ekmett/lens/issues/100
I do think that this looks nicer, for whatever reason. While the mnemonic of "mod"ulus can suggest modify once you know that, (&) somewhat naturally suggests "and then" ... "and then". I still prefer (#) for overall consistency and history, but other than its conjunction connotations, (&) is mnemonically better.
It'll be funny to mix diagrams and lens code - (&) is used for sticking coordinates together for points / vectors - while (#) would stand in for (&).
On Tue, Nov 20, 2012 at 10:17 AM, Michael Sloan
wrote: (#) is also used by the diagrams library, mainly for using functions as if they were "attributes".
In the context of lens, this is discussed a bit here: https://github.com/ekmett/lens/issues/17
On Tue, Nov 20, 2012 at 9:31 AM, Stephen Tetley
wrote:
"Haskell" called this operator (#) about 12 years ago - see Peter Thiemann's WASH and Eric Meijer and colleagues MS Agent scripting.
I'd much prefer (#) if it didn't interfere with GHC's magic hash, I suspect the above authors were using Hugs...
On 20 November 2012 17:19, Dan Burton
wrote: Just to bring up some prior art, from what I've heard, F# calls this |>.
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries