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:

Parenting standards and the village

Cartoons Hate Her has written about the village nobody wants. In principle, parents usually want a community to help take care of their kids: someone to bring meals when they get sick, keep an eye on their children while they play, and talk to about paren…

via Thing of Things December 19, 2025

Opinionated takes on parenting

This post is a collection of parenting takes that sometimes go through my head, based on my experience raising our two boys (5 and 2 years old). All of this is based on my experience and might not apply to others (see the law of equal and opposite advice)…

via Victoria Krakovna December 16, 2025

How to Make a Christmas Wreath

Yesterday, I made a Christmas wreath. Here's how to make one. First, find an evergreen tree near your house. Clip off a few branches from the tree. Try to have as many leaves or needles on the branches as possible. Next, bring them home. What I usu…

via Anna Wise's Blog Posts December 6, 2025

more     (via openring)