[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