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

Library semantics correction

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