Admittedly the (flip ($)) operator is much more basic than lenses and deserves some scrutiny. Chaining many operations "foo $ bar $ baz bag" reads "the wrong way"; one has to maintain a mental stack of the operations to figure out what's going on. OTOH, "bag & baz & bar & foo" reads "the right way". "Take bag, and then apply baz, and then apply bar, and then apply foo". Sort of like a UNIX pipeline.

I think (&) is worthy of inclusion in Prelude :-) That aside, in the context of lenses, (record & foo .~ value) is even more essential than the above general case. This is also the order that Structured/OO-style code is written (record.foo = value, in C/Ruby/Python/C++/Java/...) - for a good reason. The short of it is that IMVHO, it does meet the high bar of a universal single-character operator. I certainly use it a lot in my code.

As a side note, it would have been awesome if we could have used (:) ("record : field :~ value", and the truly elegant state-monad "field := value"). Alas, "everybody wants the (:)" - in Haskell it is used for cons, and any operator starting with ":" must be a type operator, so this is out of the question.

(&) seems like the best of the viable options, given (%) was snatched by Data.Ratio. I still prefer (%) better, but I can live with (&).

Oren.


On Wed, Nov 21, 2012 at 4:55 PM, David Menendez <dave@zednenem.com> wrote:
On Tue, Nov 20, 2012 at 11:59 AM, Yitzchak Gale <gale@sefer.org> wrote:
 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.

I think the bar should be pretty high before we add a third way to write function application to base. How common is this? Common among whom? Why can't the existing idioms of (.) and ($) work just as well?

My own opinion is that this will only serve to confuse new people.
 
Discussion period: 2 weeks 

I am currently opposed.

--
Dave Menendez <dave@zednenem.com>
<http://www.eyrie.org/~zednenem/>

_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries