The "lang" collection defines a number of modules that can serve as languages for other modules (i.e., as the initial import): * _r5rs.ss_ - provides R5RS Scheme, which is defined in the "r5rs" collection. This file is here only for backward compatibility, use (lib "lang.ss" "r5rs") instead. * _plt-pretty-big-text.ss_ - provides MzScheme plus the following MzLib libraries: etc.ss, file.ss, list.ss, class.ss, unit.ss, include.ss, defmacro.ss, pretty.ss, string.ss, thread.ss, math.ss, match.ss, and shared.ss. It also provides the posn, color, and image functions of Beginning Student. * _plt-pretty-big.ss_ - provides plt-pretty-big-text.ss plus the MrEd classes. This corresponds to the _Pretty Big Scheme_ language in DrScheme. * _htdp-beginner.ss_ - provides Beginning Student * _htdp-beginner-abbr.ss_ - provides Beginning Student with List Abbreviations * _htdp-intermediate.ss_ - provides Intermediate Student * _htdp-intermediate-lambda.ss_ - provides Intermediate Student with Lambda * _htdp-advanced.ss_ - provides Advanced Student In addition, the "lang" collection defines two modules that supply special teaching functions: * _posn.ss_ - provides the `posn' structure * _imageeq.ss_ - provides the `image=?' function ---------------------------------------- _Teachpacks, Beginner_ _Teachpacks, Higher-order Primitives_ The _prim.ss_ module defines two syntactic forms for use by the implementors of teachpacks, which the teachpack is to be used with the Beginner Student languages. In Beginner Student, primitive names (for built-in procedures) are distinguished from other types of expressions, so that they can be syntactically restricted to application positions. > (define-higher-order-primitive id proc-id (arg ...)) - defines `id' to be a primitive operator whose implementation is `proc-id'. Normally, `id' is exported from the teachpack and `proc-id' is not. For each non-procedure argument, the corresponding `arg' should be an underscore. For each procedure argument, the corresponding `arg' should be the usual name of the procedure. Example: (define-higher-order-primitive convert-gui convert-gui/proc (f2c)) > (provide-higher-order-procedure id (arg ...)) - like above, but the function `id' is exported as the primitive operator named `id'. > (define-primitive id proc-id) - defines `id' to be a primitive operator whose implementation is `proc-id', and which takes no procedures as arguments. Normally, `id' is exported from the teachpack and `proc-id' is not. > (provide-primitive id) - like above, but the function `id' is exported as the primitive operator named `id'. > (provide-primitives id ...) - multi-provide version of `provide-primitive'.