haskell-cafe-bounces@haskell.org wrote on 03/06/2007 02:43:03 PM:

> Usually, I can do this, but today, my brain is weak, and I'm just trying to
> get this piece of code out the door.  My code looks like this:
>
> weight = sum (IntMap.elems (IntMap.intersectionWith
>            (\x y -> x*y) queryVector rationalProjection))
>
> I know that this will work (ignoring indentation):
>
> sum $ IntMap.elems $ IntMap.intersectionWith (\x y -> x*y) queryVector
> rationalProjection
>
> But why won't this?:
>
> sum . IntMap.elems . IntMap.IntersectionWith ...
>
> Is there a difference between the "elegance" of function composition versus
> application?
>

I assume your really asking why something like:

    (*) $ 2 $ 3

won't work? If so, the reason is that $ associates to the right. So you should write:

    ((*) $ 2) $ 3

If not, could you give the full expression which doesn't work?

-Jeff


---

This e-mail may contain confidential and/or privileged information. If you
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.