$Id: README,v 1.2 1994/01/03 12:21:19 queinnec Exp $


                A Library of High Level Control Operators

                        Christian.Queinnec@inria.fr

These files contain the programs associated to the various control
operators described in the joined paper. They are intended to support
experimentation with these operators. 

This bunch of files contain:

        contlib.{dvi,ps}        A paper, to appear in Lisp Pointers, describing
                                various control operators:
                                        call/cc
                                        prompt control
                                        reset shift
                                        spawn
                                        splitter call/pc abort
                                        dynamic-wind

        contlib.scm             ACPS transformation, macroexpansion etc
                                providing an interpreter for:

        hlco.scm                The library itself.

        contlib.tst             A suite of tests.

        tester.scm              A test driver to check the previous test
                                suite.

To run these files, you do not need Meroon (an object system) but you
will have to comment out some forms. See the [[ What if you do not
have Meroon ]] note in the contlib.scm file.

The code uses macros to shorten definitions. All macros are defined
with a macro named define-pervasive-macro which is defined with SLIB
conventions as (see [[ SLIB macro ]] note in the contlib.scm file):

(defmacro define-pervasive-macro (call . body)
  `(defmacro ,(car call) ,(cdr call) . ,body) )

Before converting expression into ACPS (see paper), expressions are
expanded. You can get rid of this explicit expansion and use your own
expansion machinery by reading the [[ Use underlying expansion ]] note
in the contlib.scm file.

The test suite actually checks that some errors really occur. This is
achieved by an explicit interpreter appearing in contlib.scm which
catches errors. This can also be done in a non portable way with the
underlying eval procedure (but you will have some changes to perform).
Many examples that are not in the paper appears in the test suite.

You are now done, just evaluates
        (load "contlib.scm")
        (interp)

This interpreter will prompt you with a double question mark. Enjoy !
Or you can test the boring test suite with (test).

end of README
