8 Untyped and Lazy Modes

Use #:untyped immediately after #lang plait to disable type checking. The syntax of a plait module is the same with and without #:untyped, but types are ignored when #:untyped is specified. An untyped Plait module can interoperate with a typed Plait module, and dynamic checks are inserted at the boundary to protect typed functions from abuse by untyped code.

Use #:lazy immediately after #lang plait to switch evaluation to lazy mode. The syntax and type system are unchanged, but argument expressions for function calls are evaluated only when forced (by a test or by printing, ultimately). A lazy Plait module will not interoperate well with an eager module.

The #:untyped and #:lazy modifiers can be combined, and the combination can be declared in either order.