lens defines & for this purpose (not that one would want to pull in the behemoth that is lens as a dependency just for that).


On Wed, Apr 16, 2014 at 3:25 PM, Alexey Muranov <alexey.muranov@gmail.com> wrote:
Hello,

i am completely new to Haskell, but i am somewhat fascinated by lambda-calculus and programming.

For whatever it is worth, i would like to propose for discussion a syntax for "(flip ($))" operation in Haskell.

I think that a good syntax would be "|^", for example:

    square x = x * x
    y = 3 |^ square             -- y == 9


Explanation:

* i would have suggested just ^, but it would conflict with number exponentiation,

* it is rather common in mathematics to write function application in exponential notation:  x ^ f  instead of  f(x), especially if  f  is an automorphism of some structure,

* (flip ($)) is exactly the exponentiation of Church numerals,

* in "The calculi of lambda-conversion", Alonzo Church uses the "shorthand" notation "[N^M]" for "(MN)", where M and N are lambda-terms.

* I am probably not the only person missing the ability to apply functions from the right:
http://stackoverflow.com/questions/1457140/haskell-composition-vs-fs-pipe-forward-operator

Well, other notations i've thought of are "\^" and "~$".

Alexey.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe