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

[no subject]

I can answer the question about PUSH. It's certainly not the case
that we cared about being like a PDP-10 (I don't know where you got
that idea from). Basically, it follows the same philosophy as SET,
putting the location first and the expression second. The reason for
this is that it has been repeatedly noticed over time (we were brought
up on lisps that used the other arg order, too) that the location 
specification in PUSH (as for SET) is typically short while the 
expression to be pushed is often long. So you get things of the form:

 (PUSH (long                 (PUSH (long
	 expression)    or          expression) var)

(The latter drives me up a wall when people do it because it's a 
violation of grinding rules I'm comfortable with, but that's another
issue.) ... Anyway, both are comparatively hard to parse visually by 
comparison to:

 (PUSH var (long	   or   (PUSH var
	    expression))	      (long expression))

both of which are reasonably flavorful grindings and both of which are
visually more tractable.

I'll leave your other queries for Jonathan to answer. -kmp