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

Re: [Scheme-reports] ANN: first draft of R7RS small language available

Alex, here is a better example.

If I understand you correctly, you are advocating accommodating implementations 
in which the following very reasonable program /wouldn't/ work.

(module (match)
   (import (base))
   (export (match))

   (define-syntax match
     (syntax-rules (cons)
       ((_ exp1 ((cons y z) exp2))
        (let* ((x exp1) (y (car x)) (z (cdr x))) exp2))))))

  ;;; Program

  (import (base) (match))

  (match (cons 1 2)
    ((cons x y) (write x) (write y)))

This would /not/ work in the implementations you advocate accommodating becasue 
when BASE is imported into the program a new binding for CONS would be created.

I know you don't like arguments from authority and again, I am not a big 
authority, but believe me, I have gone through all the iterations you mention in 
trying ot imlement modules, so I know that Kohlbecker doesn't work for modules, 
and "naive copy imported bindings on import" just doesn't work in a 
language with macros.  I know becasue I implemented it and it was just broken in 
so many ways.  And you know what, it is not even simpler than a correct 
implementation using ER and handling the environments correctly.

Scheme-reports mailing list