Version française
Home     About     Download     Resources     Contact us    
Browse thread
RE: Functional composition operator?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: akay@s...
Subject: RE: Functional composition operator?

John Whitley raised again a question that I had asked earlier.
We were converting source from caml to ocaml, and needed to
change our infix operator for function compostion.

We found the performance and accuracy of the ocaml compiler (relative
to the caml compiler) to be excellent.  There were only two teething
problems in our 1.2MB of source code, once all the syntax changes had
been sorted out with the help of caml2csl, and these were resolved
within a day.  (Both were to do with questionable code of our own,
which probably should not have worked in caml, but which somehow
did.)  This seems to us to be an amazing achievement of the ocaml
development team, and gives us confidence in using and recommending
ocaml in the future.

From: John Whitley <whitley@cse.buffalo.edu>
> is there a consensus for choice of infix composition operator?  

In the end we settled on >> and << for forward and reverse
composition respectively, satisfying the equations:

    (f << g) x = f (g x) = (g >> f) x

The chevrons give a nice feeling of a data pipeline running from g
to f in each case.  Since composition is associative (in the absence
of side effects) we can write (f << g << h << i), which is more elegant
than (compose (compose (compose f g) h) i), without fear of being
misunderstood.

We're still interested to know if other people have different approaches.

Best wishes
Andrew Kay

--
Sharp Labs Europe Ltd, Oxford Science Park, Oxford, UK, OX4 4GB
Andrew.Kay@sharp.co.uk  Tel:+44 1865 747711 FAX:+44 1865 747717