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

My comments on the R^RS



    Date: Thu, 10 Jul 86 12:39:26 PDT
    From: andy@sun3.ads.ARPA (Andy Cromarty)

    Jonathan,

    I've enclosed my comments on the R^3RS in this note
    separately from my answers to your specific questions you asked.
    Hope this helps.  By the way, I know that putting this all together
    involves a lot of work (and sometimes a lot of refereeing), and you
    should be aware that your contribution isn't going unappreciated.   Thanks
    for all the hard work you're putting in, and my apologies in advance
    if I err here due to an insufficiently detailed reading of the report.

Hear, hear!

    ...
    2. As you might expect, I would like to see a somewhat more vigilant
       attitude in warding off the dark forces of Common Lisp.  It is not
       compatibilities or incompatibilities that are gratuitous; it is
       the very act of being concerned with compatibility at all that is
       gratuitous.  We should have our own standards of what a good LISP
       looks like and stick to them.  The first job of a good language is
       to be a good language, not to be just like another bad language
       that's familiar (nor even just like another good language that's
       familiar).  Common Lisp's goals were nearly the opposite of
       Scheme's, and however good a job the CL committee did, we owe them
       no homage.  I recognize that this is more an issue of the design
       of Scheme than of its documentation in a report, but there seems
       to me to be entirely too much concern for similarities and
       dissimilarities w.r.t. Common Lisp in the report.  It may be
       appropriate to discuss the topic of Scheme vs. CL briefly in the
       historical section, but there should be a very clear message to the
       reader that CL followed Scheme -- and continues to, in the sense
       that Scheme is meant to be a progressive attempt at (LISP) language
       design rather than a codification and standardization of existing
       ideas in prior LISPs.   The CL people should be writing reports
       that compare their work to ours, not the other way around.   ``Let
       them eat cake.''  [OK, flame off.]

[a] I think that many papers on Common Lisp have correctly attributed its
debt to Scheme.

[b] I disagree that concern with compatibility is gratuitous.  Perhaps that
concern should be subordinate to other concerns, but when everything else is
truly equal then compatibility is a reasonable criterion for breaking ties.
This is because it is better to be able to tie a feature to something already
familiar than to make a user learn something new.

[c] There should be a very clear message to the reader that Scheme certainly
does owe debts to other sources, and one of them is Common Lisp.  While
Scheme certainly has been the pioneer in the treatment of closures and
functional programming in a Lisp framework, I think it is fair to say that
Common lisp pioneered a rational (forgive the pun) treatment of numeric data
types in a Lisp framework, and my impression is that Scheme learned
something in this area from the Common Lisp experience.

[d] Don't forget that there are some people who worked on both Scheme and
Common Lisp at the same time (I do not count myself as one, by the way), to
whom I am grateful because they learned certain lessons in both contexts at
once and served to transfer ideas in both directions.

    12. I cannot refrain from observing that DO is truly ugly, a
	veritable pig of a construct, and we could have done better.
	We are indeed fortunate that its use under practical circumstances
	is rarely necessary.

I strongly disagree.  DO is a construct that emphasizes the notion that
an iteration can proceed by initializing some state variables and then
repeatedly transforming them while maintaining some invariant until
a condition is reached.  In particular, it emphasizes the fact that
outputs of the iteration as well as inputs can and should be expressed
as iterator-controlled variables.  This is a lesson that the "algebraic"
languages ought to learn.  It is an abomination to see
    sum = 0
    do i = 1 to 10 by 1
      sum = sum + a(i)
    end do
instead of
    do i = 1 to 10 by 1; sum = 0 by a(i); result sum od

    23. NOTES, p.35ff.: This material should stay somehow.  We need to
	make it clear that R^3 Scheme is not being touted as Yet Another
	Ultimate Solution To The Programming Language Problem, but rather
	as a snapshot of a *process* of good design, for which not all
	answers have yet been found.  We also ought to use the opportunity
	for publicity afforded us by SIGPLAN to advertise some of the thorny
	unsolved problems that need further research, and encourage
	language designers to work on them.

Yes.


--Guy