
L.S.,
I created a preliminary page, called Infix_Expressions, that you can find
via
http://www.haskell.org/haskellwiki/Category:Idioms
Henk-Jan van Tuyl
On Wed, 15 Mar 2006 13:25:34 +0100, Donald Bruce Stewart
simonpj:
I often wish that cool tricks like this could be collected on the Haskell web site. Now that it's a wiki, anyone could do that.
Yes, this is _exactly_ the kind of thing to add to the Idioms page of the wiki, here: http://www.haskell.org/haskellwiki/Category:Idioms
So if anyone knows of an interesting Haskell trick, and wants to write about it, add a page!
We should take advantage of the fact we have a lot of good authors in the community to document all the interesting things that we come up with :)
-- Don
Simon
| -----Original Message----- | From: haskell-prime-bounces@haskell.org [mailto:haskell-prime-bounces@haskell.org] On Behalf Of | oleg@pobox.com | Sent: 15 March 2006 04:34 | To: doaitse@cs.uu.nl; haskell-prime@haskell.org | Subject: Infix expressions | | | Doaitse Swierstra wrote: | > In Haskell we write `f` in order to infixify the identifier f. In ABC | > the stuff between backquotes is not limited to an identifier, but any | > expression may occur there. This would allow one to write e.g. | > | > xs `zipWith (+)` ys | | Chung-chieh Shan and Dylan Thurston showed the Haskell98 solution for | exactly the same example, in their article `Infix expressions', | back in 2002: | http://www.haskell.org/pipermail/haskell-cafe/2002-July/003215.html | | For ease of reference, here's their elegant solution: | | > infixr 0 -:, :- | > data Infix f y = f :- y | > x -:f:- y = x `f` y | > | > main = print $ [1,2,3] -: zipWith (+) :- [4,5,6] | | | For completeness, here's the `dual': | | > infixr 5 -! | > (-!) = flip ($) | > infixr 5 !- | > (!-) = ($) | > | > add2 x y = x + y | > add3 x y z = x + y + z | > add4 x y z u = x + y + z + u | > | > testa1 = 1 -! add2 !- 3 + 4 | > testa2 = 1 -! add3 1 !- 3 + 4 | > testa3 = 1 - 2 -! add4 1 5 !- 3 * 4 | | All code is Haskell98. | _______________________________________________
--
Met vriendelijke groet, Henk-Jan van Tuyl -- http://members.chello.nl/hjgtuyl -- Using Opera's revolutionary e-mail client: https://secure.bmtmicro.com/opera/buy-opera.html?AID=789433