Re: Anyone implemented Dylan in Scheme?

israel r t <israelrt@optushome.com.au>
29 Dec 2001 13:26:32 -0500

          From comp.compilers

Related articles
Re: Anyone implemented Dylan in Scheme? israelrt@optushome.com.au (israel r t) (2001-12-29)
| List of all articles for this month |

From: israel r t <israelrt@optushome.com.au>
Newsgroups: comp.lang.scheme,comp.lang.dylan,comp.lang.lisp,comp.compilers
Date: 29 Dec 2001 13:26:32 -0500
Organization: Compilers Central
References: <8cd70836.0112241719.b1188eb@posting.google.com> <y9ladw4elc0.fsf@informatik.uni-tuebingen.de>
Keywords: parse, Scheme, question
Posted-Date: 29 Dec 2001 13:26:32 EST

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))))
"


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.