[Haskell-cafe] Syntax proposal for "reverse apply"/"pipeline apply" (flip ($))

Alexey Muranov alexey.muranov at gmail.com
Wed Apr 16 22:25:00 UTC 2014


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.


More information about the Haskell-Cafe mailing list