Significant Whitespace In Expressions

January 8th, 2011
ideas, math, programming, tech
Order of operations can conflict with what an expression looks like it should mean. For example, the expression a * b+c looks like it means a*(b+c) but technically (and in most computer languages) means (a*b)+c. This seems analagous to the reasoning behind python using indentation instead of braces. The C code:
  if (x)
     if (y)
       z();
  else
     w();
looks like it should mean
  if (x) {
    if (y) {
      z();
    }
  }
  else {
    w();
  }
but actually means
  if (x) {
    if (y) {
       z();
    }
    else {
      w();
    }
  }
Python deals with this by treating the whitespace as significant, so:
  if x:
    if y:
      z()
    else:
      w()
and
  if x:
    if y:
       z()
  else:
    w()
both mean what they look like they should mean.

Some examples of how I would propose we do things instead:

  write                 to mean
  -----                 -------
  a+b                   a+b
  a + b*c               a+(b*c)
  a * b+c               a*(b+c)
  a+b * c+d             (a+b)*(c+d)
  a+b - c+d             (a+b)-(c+d)
  a+b  *  c+d - e+f     (a+b) * ((c+d) - (e+f))
  a  *  c + d + e       a*(c+d+e)
  a + b                 a+b, maybe yields warning
  a-b+c                 error
  a*b+c                 error
Algorithm:
for each number of spaces 0 on up:
  group any terms with that number of internal
  spaces by adding parens

Comment via: facebook, substack

Recent posts on blogs I like:

Linkpost for May

Effective Altruism

via Thing of Things May 4, 2026

Fiddle Practice

For a while I wasn't learning how to play violin very well because whenever it was time to practice I didn't want to. I didn't really like practicing, because (1) it's boring, (2) I have better things to do, and (3) actually I guess there …

via Anna Wise's Blog Posts May 3, 2026

New Pony

I have a new pony. I got her from the Goodwill. Her name is "Rainbow" and her nickname is "Sparkles". We went the usual way, in the pink stroller. We went downstairs and I played with some of the toys. I found the pony in the toy area. …

via Nora Wise's Blog Posts May 3, 2026

more     (via openring)