
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 GRacket classes. This corresponds to the
    _Pretty Big Scheme_ language in DrRacket.

 * _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'.
