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

Re: [Scheme-reports] file inclusion (section 4.1.7 of draft 9)

Alex Shinn scripsit:

> > (lambda (~a) (+ a 1))
> >
> > How could compiler know these 2 symbols are the same?
> Correct - the macro is hygienic, so the a in the file won't match the
> renamed a in the lambda.

Oddly, this isn't always what happens.  Given the call `((m) 32)`,
Racket, Gambit, Guile, Kawa, SISC, Chez, Mosh, IronScheme, SXM return
33, whereas Gauche, Chicken, Chibi, STklos, S7, Owl Lisp say `a` is
undefined.  See HygienicInclusion for details.

> > BTW, if the above macro is defined in a library, which file would
> > be included? The file in the same location of the library or macro
> > caller location?
> By the time the include is expanded it has no idea in which file it
> was originally defined (barring some sort of self-introspection on
> source info), so the include path would naturally be relative to the
> caller location.

That's explicitly undefined: the implementation applies an
implementation-specific algorithm to cast the string to a file name.

After fixing the Y2K bug in an application:     John Cowan
        WELCOME TO <censored>                   cowan@x
        DATE: MONDAK, JANUARK 1, 1900           http://www.ccil.org/~cowan

Scheme-reports mailing list