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

loop macro

    Date: Tue, 4 Feb 1986  17:10 EST
    From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>

    3. The functionality of LOOP is fine, modulo some small details, but the
    cute English-like syntax should be replaced with something more Lispy.
    Specifically, parentheses should be used to group the arguments
    controlling the various major options rather than doing this with
    connecting words like "by", "until", and "whereas".  

This is what we used to call the "new new style DO".  Back in the late
70's, Alan Bawden experimented extensively with this idea, and had a
macro called DOO that was around for a while.  Our conclusion was that
in order to get a reasonable level of functionality, you needed such a
maze of parentheses that the construct was extremely confusing and
promoted bad style.  Possibly the reason that your suggestion "went
nowhere" is that people who tried to follow it up ran into the same

							 People in this
    group feel pretty strongly that the little pseudo-sentences people end
    up writing in the LOOP syntax are extremely confusing and promote bad
    style.  Things that aren't English shouldn't look like English.

Perhaps we should not be using WHEN as the name of a special form, on
the grounds that it looks like English but isn't English, and we should
stick with names like CDAR and MAKUNBOUND and HAIPART.

I agree that some uses of LOOP are confusing.  But I disagree with the
analysis that any construct with embedded keywords must lead to
confusing programs.  The problems that you see with the use of LOOP are
not inherent in the basic idea of LOOP, but rather a consequence of some
of the details of the present LOOP design.  We believe that we can come
up with a keyword-oriented proposal that has the functionality that is
needed and is clear, but solves a lot of the problems of the existing

It sounds like you're in group 3 because you've seen a keyword-oriented
proposal that you don't like, but you have not yet seen any
non-keyword-oriented proposal at all.  I hope we'll all get an
opportunity to compare and contrast a better keyword-oriented proposal
with someone's best shot at a non-keyword-oriented proposal, before
we come to a consensus on what Common Lisp should do.

We've been talking about a revised LOOP proposal for some time now.  I
think the main reason we haven't made progress on it is the same
"exhaustion" that we discussed at the recent meeting.  If everyone's
recovered sufficiently from the previous go-arounds, maybe it's time to
get moving on this again.