## 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 errorAlgorithm:

for each number of spaces 0 on up: group any terms with that number of internal spaces by adding parens

Comment via: facebook