Some comments from the sideline.

- Infix can be semantically equivalent to s-expression, as the infix
macro I have put on "http://folk.uio.no/jornv/infpre/infpre.html";.
This means that 1 + 2 + 3 translates to (+ 1 2 3) rather than (+ (+ 1
2) 3)

- Infix is mainly useful in long-winded math expressions where
precedence is used extensively. In my opinion infix is large gain for
the basic math operators +,-,*,/,^ but not to same extent for =, <,
&&, || etc.

For example I prefer
  if (= a b) 1 2
over
  if (a = b) 1 2
but
  1 + sin 2 * 3
over
  + 1 (* (sin 2) 3)

- Infix makes operator overloading an issue. All infix operators
should eventually be overloadable, since it is far more limited how
many symbols that are suitable for infix operators compared to
function names. This is above all a problem for =. Should infix =
translate to =, eq, eql, equal, or equalp?

- Most of the brackets in lisp do not come from arithmetic expressions
at all, e.g.
(let ((a 1))
  (cond ((null a) 0)
            (t 1)))
has a lot of brackets, in my opinion too many, since it could have been
(let (a 1)
  (cond (null a) 0
             t 1))
which is also s-expression. However, I've got bad feelings changing
basic forms like that.

- Using {} and [] might require changes in programming environments like slime.

Jørn Inge

Reply via email to