[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lispy vs Pseudo-English Syntax

I'd say that a strong argument for LOOP, in addition to its use by some
current MacLisp/LispM people, is that it reflects quite well the
capabilities and syntax of Interlisp's I.S.OPRS; and those potential
CommonLisp users with some Interlisp experience will find it quite
comfortable.  Not to be overlooked is the fact that I.S.OPRS has had
over a decade of life in the Interlisp community, and is "dearly loved"
there; many other CLISPisms have not passed the test of time so well.

This brings up another point -- your suggestion to support both
syntaxes.  I don't think there is any technical conflict to doing so.
In fact, I'd rather see such a mandate broadened to treat IF in the same
way that Franz did; namely:
    (if (test) A B)
is expressed in Interlisp form as
    (if (test) 
        then A
      else B)
What the Franz folks noticed is that the only conflict between the two
is when one wants to return a variable whose name is "then" or "else".
So their IF macro accepts both forms, presumably just "biting the
bullet" on "then" and "else".  I personally find "elseif" useful too:
   (cond (p1 ...e1) (p2 ...e2) . . . (pn ...en))
   (if p1
       then ...e1
     elseif p2
       then ...e2
    . . . 
     elseif pn
       then ...en)

As to one's personal stylistic preference for syntax -- well, one man's
meat is another's poison.  But in defense of the expanded "if" over
"cond", more 2-dimensional prettyprinting as opposed to "dense" code,
and keyword-driven parsing ocasionally dispensing with parentheses, one
can point to many vanilla computer languages that take on these more
"familiar" names and styles *without making any pretensions to being
'english-like'*.  (C comes to mind, even though is is probably the worst
of all such examples!).

-- JonL --