Significant Whitespace In Expressions |
January 8th, 2011 |
| ideas, math, programming, tech |
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, substack