I'm only trying to defend a very narrow point, that when coding mathematical expressions, infix isn't bad.
Code is read by human beings too (perhaps just the person who wrote it) and more find infix arithmetic more natural looking.
I see the appeal in the idea that arithmetic is really just a very special case of a programming structure and should be treated as such, but on the other hand, I and many others can instantly see what a + bc/d - d(e+f)*g means and would like equation-heavy pieces of my programs to somewhat resemble equations everywhere else in life.
Does you have the quadratic formula memorized in list notation? How about the sum of an arithmetic or geometric series, or a formula for an inverse square law force?
> I'm only trying to defend a very narrow point, that when coding mathematical expressions, infix isn't bad.
Programming isn't math.
> Code is read by human beings too (perhaps just the person who wrote it) and more find infix arithmetic more natural looking.
And that's how infix causes bugs. The human reader error corrects and the compiler doesn't.
My goal is correct programs. What's yours?
Lisp notation eliminates a whole class of bugs.
Bugs are expensive - what are you getting for the ability to have more of them?
> I and many others can instantly see what a + bc/d - d(e+f)*g means
Really? It has at least two meanings. Which one is correct?
Yes, I do memorize formulas in a form that doesn't allow for precedence/associativity errors. Why I should prefer a form that does allow for such errors?
Programming isn't math, but mathematical expressions are often found in programs, more or less so depending on the domain. My preference is to have readable mathematical expressions in programs that resemble the forms in which I see or use them elsewhere.
In the general case of complex logical and bitwise expressions, order of operations can cause a tremendous number of bugs. I like to use parentheses to make these cases absolutely unambiguous anyway. But I can't remember introducing a serious bug because I messed up order of operations between +- and X. Anyway, if it's such a problem, there's nothing to say you can't put parentheses around every operation in infix notation, at least in any language that I know of!
Maybe my preference relates to having a fairly visual memory for formulas and such. If I want to find a root of a quadratic equation, I do (-b + sqrt(b * b - 4 * a * c))/(2 * a), and that is easy, and anyone with high school math sees that in someone's code they know what it is. (I probably have to check for a zero denominator and also look at the discriminant unless I'm directly using complex numbers, and there's also the conjugate root, but that doesn't change much.)
If I have to write (/ (+ (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a)) then I can do it, but it takes a lot of thought and it doesn't go along with the way I think about the quadratic formula. Granted, this is because I learned it the way I did, but I also know I'm not the only one.
A footnote to that is that to my mathematical sensibilities, in list notation, using the same symbol for negation and subtraction is hideous!
> Anyway, if it's such a problem, there's nothing to say you can't put parentheses around every operation in infix notation, at least in any language that I know of!
Most of us have to read code written by other people. Those other people don't have exactly the same precedence defense habits that we do.
No, we don't have to end up in the nasty middle ground where the paretheization is inconsistent and buggy, but we do. Since the "infix is good" theories and argument predict otherwise, how much weight should we give them?
Code is read by human beings too (perhaps just the person who wrote it) and more find infix arithmetic more natural looking.
I see the appeal in the idea that arithmetic is really just a very special case of a programming structure and should be treated as such, but on the other hand, I and many others can instantly see what a + bc/d - d(e+f)*g means and would like equation-heavy pieces of my programs to somewhat resemble equations everywhere else in life.
Does you have the quadratic formula memorized in list notation? How about the sum of an arithmetic or geometric series, or a formula for an inverse square law force?