8 Untyped, Lazy, and Fuel 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.

Use #:fuel amount immediately after #lang plait to specify how much effort should be spent resolving potentially cyclic dependencies due to inference of polymorphic recursion. The default fuel is 100.

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