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

Re: internal define (was: macros expanding into definitions)



> From: jar@cs.cornell.edu (Jonathan Rees)
> Date: Wed, 2 Dec 92 23:05:38 -0500
....
> Now, it's possible that the proposal may topple under the weight of
> these auxiliary concepts.  ....

If the current proposal is too big of a change, let me suggest
another, more modest proposal that would make internal definitions
more like toplevel ones.  I suggest we specify that the initialization
of LETREC bindings must be performed in the given textual order.
Unlike toplevel definitions, internal ones would still be required to
be declared before any expressions in a block, but at least, one could
depend on the order of evaluation as you can with toplevel
definitions.  Also, the meaning of the program below is not
unspecified,

(define y (set! x 2))
(define x 3)
x

but the meaning of the following one is specified to be in error.

(let ()
  (define y (set! x 2))
  (define x 3)
  x)

Sure, it's a little odd, but it is better to make this modest change
than no change at all!

John

P. S.  I suggest that we postpone any discussion on purifying LETREC
as it just diverts attention from the topic of internal definitions.  
I wish I had never brought up the subject.