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

Re: Anyone implemented Dylan in Scheme?



On 27 Dec 2001 16:25:51 +0100, sperber@informatik.uni-tuebingen.de
(Michael Sperber [Mr. Preprocessor]) wrote:
>http://zurich.ai.mit.edu/pipermail/rrrs-authors/1992-September/001463.html
>
>Except for the syntax (which was Scheme-like back then), Thomas
>probably a good starting point.  I don't know that the software is
>still available, but you might want to contact the authors for more
>info.

Of considerable interest is the following message by the authors of
Thomas ( which follows the previous url and may be easily missed )

http://zurich.ai.mit.edu/pipermail/rrrs-authors/1992-September/001464.html

An extract follows:

"Despite all of the hairy stuff involving keywords, specializers,
multiple inheritance and the rest of it, the generic dispatch system
of Dylan (maybe also CLOS?) was remarkably simple to build and
understand.  The key procedure is in the file generic.scm, and is
simplified here (I removed support for multiple values, error
checking, and renamed some functions for clarity):

   (define (generic-dispatch original-args generic-function)
     (let ((applicable-methods
    (sorted-applicable-methods
     (generic-function.methods generic-function)
     original-args)))
       (let next-method-loop ((remaining-methods applicable-methods)
      (current-args original-args))
 (apply (car remaining-methods)
(if (null? (cdr remaining-methods))
    #F
    (lambda (next-method . these-args)
      (next-method-loop (cdr remaining-methods)
(if (null? these-args)
    current-args
    these-args))))
current-args))))
"