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

Re: semantics of DEFINE (why use it at all on the top level?)



In article <59918@yale-celray.yale.UUCP>, I wrote:
>In article <2454@ski.cs.vu.nl>, biep@cs (J A Biep Durieux) writes:
>>In article <890503-103409-9762@Xerox> Pavel.pa@XEROX.COM writes:
>>
>>>-- A program is a mixed sequence of definitions and expressions.
>>>	
>>>--The meaning of a program P is the same as that of the expression:
>>>		    ((lambda  (I*)  P')  <undefined>  ...)
>...
>>Then why not actually do this?
>>
>>-- The scheme top-level environment has each variable bound to a unique
>>   location.  Many of these locations will be assigned the value 
>>   #\undefined.
>>
>>-- The user can assign other values to variable locations using "set!".
>>   A "define" on top level will be an error, since the variable is
>>   already bound on that level.
>
>First, the system has to know what symbols to bind in the global LET
>contour.  It would be consistant to have DEFINE always specify that a
>symbol be included in this binding.
>
>Secondly, having internal DEFINEs do local definitions is even more
>redundant, since it is 100% translatable into a LETREC while DEFINE is
>needed to specify what variables should be bound.

Gee that last paragraph reads like gibberish.  What I meant was:

  Secondly, having internal DEFINEs do local definitions is even more 
  reduntant since this is 100% translatable into LETREC.  On the other 
  hand, top-level DEFINEs are not 100% translatable since some specification
  is needed of which variables should be in the top-level contour.


Bruce