On Thu, Jun 05, 2003 at 10:03:55AM +0100, Graham Klyne wrote: > At 19:50 04/06/03 -0400, Derek Elkins wrote: > > You (Graham) also have some parentheses issues; e.g. in foo ++ > > (combinations 5 l) the parentheses are superfluous. > I'm tempted to argue that being superfluous doesn't mean they > shouldn't be there.
Keith already made one argument for less parentheses, here's my take on the subject: Given that: (++) :: [a] -> [a] -> [a] -- contatenates lists foo, l :: [a] -- are lists bar :: Int -> [a] -> [a] -- produces a list Which of the following make sense? > (foo ++) bar 5 l -- No, because bar isn't a list, > (foo ++ bar) 5 l -- and 5 and l would be applied to a list, > (foo ++ bar 5) l -- (as opposed to a function,) which make no sense > foo (++ bar 5 l) -- Can't apply a function to a value, > -- though (++ bar 5 l) foo has the same effect as what we intended > foo ++ (bar 5 l) -- which is just foo ++ bar 5 l Because of the static type checking that takes place, you can't easily (not unless you were _trying_ ;) produce an ambiguous expression such that the removal of brackets keeps it well-typed, yet is not equivalent to the original. So as opposed to the C code where you (and I) would put in extra brackets `just to be sure', I wouldn't bother with them unless I know the expression's going to be ambiguous. (or if the compiler tells me so. ;-) (I suppose you could argue it's not necessarily obvious that foo is a list and bar is a 2-ary function of an Int and a list. My response would be to rename foo and bar so that this is the case. ;-) > I'd just about figured the ShowS idea, but I've yet to get a handle on this > idea of [a] 'monoid'. Might http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm be of any help? later, /Liyang -- who managed to sneak into Category Theory lectures, but still has no idea what a monad is. ^_^; -- .--| Liyang HU |--| http://nerv.cx/ |--| [EMAIL PROTECTED] |--| ICQ: 39391385 |--. | :::::::::::::::::::::: This is not a signature. :::::::::::::::::::::: | _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe