[EMAIL PROTECTED] wrote:
I suggested:

       f . g $ h x

or
       f $ g $ h x

[..]
The second is just plain wrong.  My reasoning is here for those who care:

    http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/11256

If you want a left-associative operator, you're free to define it (though single ascii symbols are rare).

In a more realistic example, the current dollars help to improve readability, I think, and that is my argument why "$" should be right- associative:

    map (+ 1) $ filter (/= 0) $ Set.toList l

An additional $ before the final argument (" $ l") looks stupid to me.
I also find additional parentheses instead of the dollars more confusing, because of the other parts in parentheses.

For a function definition, I recommend to simply change the dollars into dots and omit the last argument (if that is possible):

  myfun = map (+ 1) . filter (/= 0) . Set.toList

That should correspond to your taste as well, although someone (ie. S.M.) proposed to disallow the dot as operator in haskell'.

So, I don't know if either "." or "$" may be changed in the future and what other symbols may be used instead of these user-definable functions.

However, if the argument cannot be omitted, I suggest to only change the last dot back into a dollar:

myfun l = map (+ sum l) . filter (/= 0) $ Set.toList l

I've no solution (ie. operator) for omitting two elements in:

  f x y = g $ h $ i x y

apart from omitting only the first:

  f x = g . h . i x

HTH Christian
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to