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


    Date: Wed,  2 Apr 86 13:20:44 EST
    From: Jonathan A Rees <JAR@MC.LCS.MIT.EDU>

	Date: Wed, 2 Apr 1986  12:57 EST

	I don't like the idea of extending BEGIN to allow definitions.  ALGOL
	needed that because it didn't have LET; we don't have that excuse.

    Then perhaps BEGIN should be caled something else... maybe SEQUENCE or
    SEQUENTIALLY... I thought it got its name from Algol 60 and therefore
    should be as much like Algol 60's begin blocks as possible... rememeber
    that BEGIN in Algol 60 is primarily a binding construct, not a
    sequencing construct so I thought there was a mismatch of name and
    functionality here, one or the other should change...  don't anyone
    messages that I send on April 1 seriously.  This issue has been beaten
    to death and it was (& is) in poor taste for me to inflame old wounds

    I'm going to leave BEGIN as it is.  Rather than put SEQUENCE in an
    appendix, I and some others at MIT prefer that it be left in the main
    part of the report as a non-essential special form, and we want to flush
    the request that it "not be used in new code".  (Today is April 2.)  I
    hope this doesn't bother anyone too strongly.

    Apparently there's no consensus on any change to local DEFINE, so I'm
    going to leave it as it is the the RRRS: all the definitions must appear
    at the beginning; local defines are sugar for LETREC; LETREC binds
    everything at the top, and does the right-hand side computations and the
    assignments in an indeterminate order; LETREC permits arbitrary
    expressions on the right-hand sides; a reference to any of the variables
    during the evaluation of any of the right-hand sides is an error.


I didn't realize this idea of putting definitions in BEGIN was a serious 
suggestion. I strongly oppose having either BEGIN or LET do this. The reason
is that it makes it impossible to write code which wants to use these 
primitives for other things and doesn't have additional implications that
may be unwanted or may have implications in macros or program-writing programs
that some programmer didn't count on.

As a counter-proposal, how about a LOCALLY special form. 
 ie, (LOCALLY <definition>* <form>*)