
Does anyone know why the haskell designers did not make the syntax right associative? It would clean up a lot of stuff. Haskell Non-Haskell Left Associative Right Associative foo (bar (baz (x))) foo bar baz x foo $ bar $ baz x foo bar baz x add (square x) (square y) add square x square y add (square x) y add square x y ------------From Prelude---------------------- map f x (map f) x f x (n - 1) x f x n - 1 x f x (foldr1 f xs) f x foldr1 f xs showChar '[' . shows x . showl xs showChar '[] shows x showl xs You just need to read from right to left accumulating a stack of arguments. When you hit a function that can consume some arguments, it does so. There is an error if you end up with more than one value on the argument stack. -Alex- On Fri, 25 May 2001, Tom Pledger wrote:
Peter Douglass writes: : | but in ( foo ( bar (baz x) ) ) | | You would want the following I think. | | foo . bar . baz x | | which does have the parens omitted, but requires the composition | operator.
Almost. To preserve the meaning, the composition syntax would need to be
(foo . bar . baz) x
or
foo . bar . baz $ x
or something along those lines. I favour the one with parens around the dotty part, and tend to use $ only when a closing paren is threatening to disappear over the horizon.
do ... return $ case ... of ... -- many lines
Regards, Tom
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
___________________________________________________________________ S. Alexander Jacobson Shop.Com 1-646-638-2300 voice The Easiest Way To Shop (sm)