This page is part of the web mail archives of SRFI 83 from before July 7th, 2015. The new archives for SRFI 83 contain all messages, not just those from before July 7th, 2015.
With the semantics as stated in the document, a library will only ever be visited at phase 0, so a recursion step seems to be missing. Indeed, the following example is not covered: (library "m" "scheme" (export u) (define-syntax u (lambda (exp) (syntax 1))) (library "n" "scheme" (import (for "m" syntax)) (define-syntax v (lambda (exp) (u))) Indeed, visiting "n" at phase 0 requires "m" to be visited at phase 1 (because there is a reference to the macro u on the right hand side of the definition of v. Here is what I think needs to be added: To visit a library at phase N: * Visit at phase N any library that is imported by this library for run time, and that is not yet visited at phase N. * Invoke at phase N+1 any library that is imported by this library for .... expand, and that is not yet invoked at phase N+1. [ADDITION] * Visit at phase N+1 any library that is imported by this library for .... expand, and that is not yet visited at phase N+1. [END ADDITION] * Evaluate all syntax definitions within the library. (Top-level expressions are not evaluated, and the right-hand sides of variable definitions are not evaluated.) Regards Andre