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


    Any argument based on reflecting the internal representation of
    anything is suspect.  Abstractions are abstractions.

Kent missed the main point of Greg's and Margot's arguments.  I wasn't
talking about "internal representation", and Margot wasn't either as
regards PUSH/POP.  Ignoring what she said about property lists (I agree
with Kent, hide that representation), her general point is still good--
it is nice to have a kind of visual concordance between list structure
AS IT IS VISUALIZED (prints out) and the functions that manipulate list
structure.  That, after all, is one of the main virtues of backquote;
the lists it constructs look like the code you write.

Margot and Greg argue that all the other list functions order their
arguments according to how the resulting list structure prints out.  E.g.
(LIST 'A 'B 'C) => (A B C), not (C B A), (CONS 'A '(B C) ) => (A B C),
(APPEND '(A B) '(C D) ) => (A B C D).  Since PUSH puts a value at the front
of a list, why shouldn't the value be the first argument?  For consistency
(according to them) the syntax should be (PUSH value stack).

I think this is a valid, strong argument.  I don't think it outweighs
the other arguments though.