home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / scheme / 2027 < prev    next >
Encoding:
Internet Message Format  |  1992-08-13  |  6.3 KB

  1. Path: sparky!uunet!olivea!decwrl!deccrl!bloom-beacon!INTERNET!dont-send-mail-to-path-lines
  2. From: jmiller@crl.DEC.COM
  3. Newsgroups: comp.lang.scheme
  4. Subject: R^4RS Authors Comments on Dylan
  5. Message-ID: <9208132109.AA16509@peanut.crl.dec.com>
  6. Date: 13 Aug 92 21:09:18 GMT
  7. Sender: daemon@athena.mit.edu (Mr Background)
  8. Organization: The Internet
  9. Lines: 112
  10.  
  11. This message summarizes the work of the task force appointed by the
  12. Authors of the Revised^N Report on the Programming Language Scheme
  13. (RNRS Authors) to study compatibility with Dylan.
  14.  
  15. Executive Summary:
  16.   It is clear that the Dylan design effort has incorporated many of
  17.   the most important lessons learned in the design and implementation
  18.   of Scheme (as well as other languages).  They have designed an
  19.   admirable language, and the Scheme community can learn some lessons
  20.   from the process.  The languages have different goals, and will for
  21.   good reason need to remain distinct.  Nonetheless, we find a small
  22.   number of points where each language could still benefit from work
  23.   by the other.
  24.  
  25. Items for consideration by the Scheme community:
  26.  
  27. o Dylan has a well thought out exception system.  While the exact
  28.   solution may not suit Scheme, any gratuitous differences should be
  29.   avoided.  Since we have a subgroup designing an exception system for
  30.   inclusion in R5RS, we should ask them to study Dylan's sytem
  31.   carefully.
  32.  
  33. o Dylan's use of generic functions, derived directly from CLOS, fit
  34.   into the language in a particularly elegant manner.  If the Scheme
  35.   community does decide to adopt a modest object system, we should
  36.   study Dylan's subset of CLOS to make an informed choice between this
  37.   approach and the more traditional object-dispatch mechanism.
  38.  
  39. o Scheme might benefit from adopting a subset of the collection and
  40.   sequence operations from Dylan.  In particular, the ability to
  41.   iterate over diverse sequences would be a valuable addition to
  42.   Scheme, and compatible with similar generic operations on numbers
  43.   already provided in the language.
  44.  
  45. o It is not possible to make a (reasonable) portable implementation of
  46.   Dylan in Scheme without the addition of some form of weak pointer
  47.   object.  The Scheme community should consider the addition of at
  48.   least one such mechanism as part of the language core (weak-cons,
  49.   populations, and weak hash tables are more or less interchangeable).
  50.   Oddly enough, Dylan hasn't made any particular mechanism visible to
  51.   users, although the mechanism must exist internally.  Perhaps this
  52.   mechanism should be coupled with the finalization proposal that has
  53.   been deferred to R6RS.
  54.  
  55. o While the details of Dylan's module system aren't available, the
  56.   fact that the outermost lexical environment is specified as a module
  57.   boundary is particularly interesting.  It allows a compiler to
  58.   detect unbound variables at compilation time.  Since modules are a
  59.   perpetual question for the Scheme community, we might want to
  60.   consider this issue (as well as the eventual Dylan module system)
  61.   during the design process.
  62.  
  63. o Not surprisingly, Dylan has followed the lead of CommonLisp in its
  64.   handling of multiple return values.  While Scheme, in R5RS, will
  65.   include multiple values, they are not required to have the
  66.   "dropping" semantics of CommonLisp.  [Actually, the current Dylan
  67.   manual is unclear on this, but private correspondance indicates that
  68.   this was unintentional.]
  69.  
  70. Items for consideration by Dylan designers:
  71.  
  72. o We understand (from David Moon) that the Dylan book inadvertantly
  73.   omitted the requirement that all Dylan implementations be properly
  74.   tail-recursive.  We regard this as a critical requirement.
  75.  
  76. o We urge the Dylan community to reconsider the restriction on the use
  77.   of escape procedures which prevents them from being used as Scheme's
  78.   first-class continuations.  The extra power available by relaxing
  79.   the restriction is significant, and the implementation cost appears
  80.   to be small.  The use of full first-class continuations is likely to
  81.   simplify the exception system, as well, and this will become an
  82.   unnecessary additional source of incompatibility.  This, in
  83.   particular, is an area where we'd welcome an opportunity to work
  84.   with the Dylan team to resolve the issue.  This appears to be the
  85.   only item that prevents a straightforward translation of Scheme
  86.   programs into Dylan or the creation of a Scheme environment within
  87.   Dylan -- both of which are of extreme interest to the Scheme
  88.   community.
  89.  
  90. o The restriction of variable names (in DEFINE-CLASS, etc.) and
  91.   GETTER: and SETTER: (in slot descriptions) to module variables seems
  92.   unmotivated.  As currently specified, it allows a user write-only
  93.   access to the outermost lexical scope in cases where a lexical
  94.   variable shadows a module binding.  The language would be
  95.   significantly simpler if this notion were removed and a completely
  96.   lexical implementation (familiar to users of C, C++, BCPL, ALGOL,
  97.   FORTRAN, and SCHEME).  It is hard to understand what motivates this
  98.   particular design decision.
  99.  
  100. o Dylan follows a representation-based number system (similar to
  101.   CommonLisp).  But the specification is sufficiently weak that it is
  102.   impossible to tell how it relates to the Scheme notion of
  103.   exact/inexact numbers.  While it would be unreasonable of us to ask
  104.   Dylan to reconsider this particular decision, it would be
  105.   instructive to both languages to see whether the eventual
  106.   specification of the Dylan number system can be simultaneously
  107.   compatible with both notions, perhaps by providing EXACT?, INEXACT?,
  108.   INEXACT->EXACT, and EXACT->INEXACT procedures and the associated
  109.   contagion rules.  In addition, Dylan doesn't provide analogs of the
  110.   Scheme procedures NUMBER->STRING and STRING->NUMBER (with their
  111.   associated invariance relation) -- this seems a logical extension to
  112.   the Dylan AS generic function.
  113.  
  114. o Without quarreling with Dylan's decision on the SETTER notation, we
  115.   prefer the value-based implementation found in T over the name-based
  116.   implementation in Dylan.  In particular, the ability to bind (SETTER
  117.   T) as a lexical variable seems unusual and (frankly) unpleasant.
  118.  
  119. o Dylan's position on the order of argument evaluation (left-to-right
  120.   for arguments, but unordered with respect to the operator) seems
  121.   particularly strange, since it has the drawbacks of the Scheme
  122.   (unordered) decision without its performance advantages.
  123.