context-scheme. description

ContextScheme is an implementation of some of the essential ideas of Context-oriented Programming. It roughly relates to ContextL like Tiny CLOS relates to CLOS. More specifically, ContextScheme is independent of any object-oriented extension, so it illustrates only the essential ideas of dynamic layer activation and deactivation.



There are two implementations: ContextScheme provides layers and layered functions along with layer activation and deactivation. SimpleContextScheme provides layers and layered functions, but only layer activation, no layer deactivation. The reason for providing two different implementations is that layer deactivation adds some considerable complexity at the implementation-level, so SimpleContextScheme is probably easier to understand at first.



Both implementations have been tested against R5RS Scheme. In the comments, you can find some workarounds for potentially missing Scheme features (namely: multiple values, dynamic-wind and syntax-rules). The source code also contains a few obscure test cases, as well as a simple example. (See this paper for the origin of the test cases.)



You can find good introductions to Context-oriented Programming here and here. Papers with some advaced topics can be found here and here.



downloads

Here are the download links: ContextScheme and SimpleContextScheme. The code comes with a BSD/MIT-style license. Please send questions and comments to Pascal Costanza.



