Keith Wansbrough Keith.Wansbrough@cl.cam.ac.uk
Thu, 05 Jun 2003 16:20:36 +0100

> >   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.  This isn't just a functional programming issue... I find that when 
> there are many levels of operator precedence it's easier to be explicit 
> than to try and remember what they all are -- as much for reading the code 
> as writing it in the first place.  But maybe I'm still reading functional 
> code in the wrong way?  (I still scratch my head over some of the 
> prelude/library functions, though it's getting easier.)

This is a particular instance where you never need the
parentheses... since it's a _functional_ language, _function
application_ (the invisible symbol between combinations and 5, and
between combinations 5 and l) binds tighter than anything else.  The
only time you need parentheses around a function application are when
it is to protect it from a competing function application, such as
when you are passing it as an argument to a function:

  map (map f) xss    rather than   map  map f  xss


--KW 8-)