MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

 

Download:
pdf
by Christian Queinnec
http://www-spi.lip6.fr/~queinnec/PDF/sws.pdf
Add To MetaCart

Abstract:

23 things I know about modules for Scheme The benefits of modularization are well known. However, modules are not standard in Scheme. This paper accompanies an invited talk at the Scheme Workshop 2002 on the current state of modules for Scheme. Implementation is not addressed, only linguistic features are covered. Cave lector, this paper only reflects my own and instantaneous biases! 1. MODULES The benefits of modularization within conventional languages are well known. Modules dissociate interfaces and implementations; they allow separate compilation (or at least independent compilation à la C). Modules tend to favor re-usability, common libraries and cross language linkage. Modules discipline name spaces with explicit names exposure, hiding or renaming. Quite often, they also offer qualified naming. These name spaces may cover variables, functions, types, classes, modules, etc. Just as components, modules may explicit their dependences that is, the other modules they require in order to work properly. Building a complete executable is done via modules linking or module synthesis in case of higher-order modules. Modules dependencies usually form a DAG but mutually dependent modules are sometimes supported. Proposals for modules for Scheme wildly differ among them (as will be seen) but they usually share some of the following features: Determinization of the building of modules — For us, this is the main feature that allows users to build a system S exactly as it should stand, that is, without any interference of the current system where S is developped and/or compiled. This is in contrast with, say the Smalltalk way, where the state of the entire (development) system staid in memory (or in image files) making notoriously

Citations

141 The revised5 report on the algorithmic language Scheme – Kelsey, Clinger, et al. - 1998
42 A Module System for Scheme – Curtis, Rauen - 1990
38 Syntactic abstraction – Dybvig, Hieb, et al. - 1993
35 Composable and compilable macros: You want it when – Flatt - 2002
21 Designing MEROON v3 – Queinnec - 1993
16 Modules, macros and Lisp – Queinnec, Padget - 1991
16 Extending the scope of syntactic abstraction – Waddell - 1999
14 Lisp in Small Pieces – Queinnec - 1996
9 Macroexpansion reflective tower – Queinnec - 1996
9 Roure. Sharing code through first-class environments – Queinnec, De - 1996
7 The Incomplete Scheme 48 Reference Manual for release 0.57 – Kelsey, Rees - 1999
7 A deterministic model for modules and macros – Queinnec, Padget - 1990
6 version 3.0, A portable implementation of Scheme, 3.0 edition – Gambit-C - 1998
2 Bigloo — A “practical Scheme compiler” for Bigloo version 2.5b – Serrano - 2002