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

Fixing null-environment and scheme-report-environment



   Date: Tue, 17 Feb 1998 17:00:04 -0500
   From: Richard Kelsey <kelsey@research.nj.nec.com>


      From: Kent Pitman <kmp@harlequin.com>
      Date: Tue, 17 Feb 98 15:48:50 EST

      Further, the phrase "only the set of bindings specified in the
      corresponding report that the implementation supports" has two
      parses, at least one of which is NOT what you want and needs to
      be fixed in any case.  (It appears to say that you are allowed
      to support only a subset and that this will magically reveal the
      subset.)

   You are allowed to support only a subset.  Some of the bindings
   are optional, and an implementation may or may not support them.
   The intent is that SCHEME-REPORT-ENVIRONMENT include all of the
   required bindings plus whichever of the optional bindings the
   implementation supports, and nothing else.

   How about:

    SCHEME-REPORT-ENVIRONMENT returns a specifier for an environment
    that contains the required bindings defined in the specified report,
    all of the optional bindings from that report that the implementation
    supports, and no others.

    NULL-ENVIRONMENT returns a specifier for an environment that contains
    the (syntactic) bindings for the required syntactic keywords defined
    in the specified report, the (syntactic) bindings for all optional
    keywords from that report that the implementation supports, and no
    others.

To the extent that this issue is separable from the other I raised (which
I think is "only somewhat") this is better.

But I still think the reference to 'the specified report' makes the
whole thing a mess because of the out-of-bound attempt to say what
other implementations will do.  I would still prefer the wording that
did not refer to 'the specified report' and instead referred only to
'this report'.  Let other reports speak for themselves.

Was there a problem with my proposed alternate style?  Is there a reason
that mentioning the behavior in other implementations we don't control is
important to do?

I counterpropose (incorporating my understanding of your fix from above):

==============================================================================

 (scheme-report-environment _version_)                procedure
 (null-environment _version_)                         procedure

 _Version_ must be the exact non-negative integer _k_ (i.e., 5) corresponding
 to this revision of the Revised^k Report on Scheme.

 SCHEME-REPORT-ENVIRONMENT returns a specifier for an environment that 
 is empty except for all bindings defined in this report that are either
 required or both optional and supported by the implementation.

 NULL-ENVIRONMENT returns a specifier for an environment that is empty
 except for the (syntactic) bindings for all syntactic keywords 
 defined in this report that are either required or both optional and
 supported by the implementation.

 Whether or not other values of _version_ are supported in any implementation
 conforming to this report is implementation-defined.  An error is signalled
 if an argument is given that is neither the revision number of this report 
 (i.e., 5) nor some other value defined by the implementation.