This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki HygienicInclusion version 4

author

cowan

comment


    

ipnr

127.11.51.1

name

HygienicInclusion

readonly

0

text

Are inclusions hygienic?

Given the macro

{{{
(define-syntax m
  (syntax-rules ()
    ((_) (lambda (a) (include "add.scm")))))
}}}

where `add.scm` contains `(+ a 1)`, is the `a` that is bound inside the macro the same as the `a` in `add.scm`?  In particular, does `((m) 32)` evaluate to 33, or is `a` reported as an undefined variable?

Evaluates to 33: Racket, Gambit, Guile, Kawa, SISC, Chez, Mosh, !IronScheme, SXM

`a` is undefined: Gauche, Chicken, Chibi, STklos, S7, Foment, Owl Lisp

`include` is undefined or broken: MIT, Bigloo, Scheme48/scsh, SCM, Vicare, Larceny, Ypsilon, Scheme 9, Sagittarius

No syntax-rules macros: NexJ, JScheme, KSi, RScheme, !SigScheme, Shoe, !TinyScheme, Dream, BDC, XLisp, Rep, Schemik, Elk, UMB, Oaklisp, Llava, Sizzle, !FemtoLisp, Dfsch, Inlab

time

2014-12-28 08:45:22

version

4