
David House wrote:
On 27/07/06, Brian Hulley
wrote: I think there's really only one way when it needs to occupy more than one line:
if c then t else f
Confusingly,
if c then t else f
Also works, although no-one really knows why.
Only if the "if" does not start a new layout line. Anyway, how about changing the syntax to: "if" exp "{" "then" exp ";" "else" exp "}" Then the layout rule + the offside rule would still allow (iiuc) if x < 0 then 5 else 6 but would force the "then" to be further indented than the "if" (and the "else" to be indented at least as much as the "then" (indenting it more is where the offside rule is needed to make things work)) In addition, if we followed Jon's suggestion to make constructs self-bracketing, we could allow an optional keyword such as "/if" to terminate the construct early thus: a = if x < 0 then 5 else 6 /if + 78 I'd also change the lambda syntax to: \{x 2 -> x+5; x y -> x*y} which again would, by the layout rule, still allow current lambda syntax as a special case. The optional terminator could be "/\" and if all constructs were now aexp's (as suggested by the desire to make them self-bracketing) instead of exp10's we could then write: f \x y -> y x /\ 6 instead of having to write f (\x y -> y x) 6 I'd be in favour of /if /case /let /\ etc instead of fi esac tel because it looks more systematic and follows the usual XML conventions for end tags. I'd suggest that floating point division should just be written `divide` - it's just a very specialised arithmetic op so why waste a nice symbol on it? (ditto ^ ^^ **) (I'd have thought integer division is used more often and no-one seems to mind writing `div`.) Anyway having said all this, I can't help feeling that explicit brackets, as required at the moment, help to clarify the structure of the code, and that removing the need for them may negatively impact on readability. Regards, Brian. -- Logic empowers us and Love gives us purpose. Yet still phantoms restless for eras long past, congealed in the present in unthought forms, strive mightily unseen to destroy us. http://www.metamilk.com