Function Composition

John Nilsson john at milsson.nu
Tue Jan 1 16:07:01 PST 2013


For what it's worth. I think the math people got it wrong with "∘". The
other operation they call compose: "*;*" - which has applicative order -
feels more natural. So one vote for keeping compose as "*;*". Also, this is
the composition operation for statements Java programmers have been using
for years with no complaint, so why arbitrarily switch to "∘" for function
composition?
Besides even the math people revert to applicative order when modelling
function composition as a category.

BR,
John


On Wed, Jan 2, 2013 at 12:40 AM, Jed Wesley-Smith <jed at wesleysmith.io>wrote:

> hello lambdarians!
>
> Just noticed that the java.util.function.Function.compose method is
> round the wrong way (according to the common definition of function
> composition*).
>
> The current lambda definition:
>
>
> http://hg.openjdk.java.net/lambda/lambda/jdk/file/858e2f478d62/src/share/classes/java/util/function/Function.java
>
> has f.compose(g) mean apply f and then apply g, whereas the usual
> (most other languages and the literature) has f ∘ g mean apply g and
> then apply f.
>
> The form that Function has currently is commonly known as andThen. So,
> you could rename the current method andThen and add a new compose
> method that works in the usual manner.
>
> cheers,
> jed.
>
> * references:
> http://en.wikipedia.org/wiki/Function_composition
> http://en.wikipedia.org/wiki/Function_composition_(computer_science)
>
>


More information about the lambda-dev mailing list