Egil Möller:
>     2. Most consistent: Allow indentation on initial line (and consider that
  the indentation for that expression), as long all later lines have
  a further indentation OR are on the left edge (including a blank line
  ending in EOL or EOF, or a comment the left edge).
    
>If I understand this correctly, it unfortunately breaks the following code:
  foo bar
      fie

      ; some comment
      muae
      naja hehe

> The code is supposed to mean (foo bar fie muae (naja hehe))...

Except for the blank line, this would work just fine.   I had a separate 
proposed rule saying that "whitespace-only lines = line with no whitespace", 
I'll presume that's what you're commenting on.

Yes, that's a downside of that proposal.  On the other hand, your example might 
ALSO have the same interpretation - there's no way to tell the difference, 
because the difference is in the amount of whitespace on a line.

I think that paying to attention to indentation on whitespace-only lines is a 
long series of hairy bugs waiting to happen.  I don't think anyone wants to 
debug by checking WHITESPACE on blank lines.  I sure don't, I make enough 
mistakes already :-).

Besides, tools are generally unkind to whitespace-only lines.  Some editors 
will helpfully remove them for you (!). In fact, your code as received by my 
emailer WOULD do the same thing.  The code that my email system received did 
not have ANY whitespace on that middle line, so your code would ALSO silently 
have that effect.

I think there's an easy workaround that makes this useable; if you want 
vertical space, just use a ";" character and nothing else.  Like this:
  foo bar
      fie
      ;
      ; some comment
      muae
      naja hehe

This has the advantage of being REALLY OBVIOUS that the indentation level has 
been retained (if they got there a different way, the reader can complain).

Another option I didn't mention was to "ignore whitespace-only lines".  That 
would work well in files, but it would HIDEOUS for interactive use.  It'd mean 
that you would have to enter your NEXT command before reading (and execution) 
of the previous command, making it CERTAIN that your output will be 
out-of-sync.  And I think it'd be a VERY bad idea for the syntax to vary 
between interactive and non-interactive use... it's confusing, and makes 
debugging rough.

--- David A. Wheeler

Reply via email to