The forthcoming Revised6 Report on Scheme differs from previous reports in that the language it describes is structured as a set of libraries. It also provides a syntax for defining new portable libraries. The same library may export both procedure and hygienic macro definitions, which allows procedures and syntax to be freely intermixed, hidden, and exported. This paper describes the design and implementation of a portable version of R6 RS libraries that expands libraries into a core language compatible with existing R5 RS implementations. Our implementation is characterized by its use of inference to determine when the bindings of an imported library are needed, e.g., run time or compile time, relieving programmers of the burden of declaring usage requirements explicitly. Categories and Subject Descriptors D.3.3 [Programming Languages]: Language Constructs and Features--modules, packages; D.3.4 [Programming Languages]: Processors--compilers; preprocessors General Terms Languages Key...
Abdulaziz Ghuloum, R. Kent Dybvig