22 Parameter utilities
| (require (planet untyped/unlib/parameter))|
Convenience forms for working with parameters.
|(make-guard pred type-message) → (any -> any)|
| pred : (any -> boolean?)|
| type-message : string?|
Creates a procedure that may be used as a parameter’s guard procedure. The guard only allows values for which pred returns #t. If an invalid value is supplied, the guard raises exn:fail:contract with an error message based on the supplied type-message.
make-guard has been superseded by the parameter/c contract in PLT 4.
| > (define param|
| (make-parameter #f (make-guard integer+false? "(U integer #f)")))|
| > (param 1)|
| > (param #f)|
| > (param #t)|
Expected (U integer #f), received #t
|(define-parameter id initial-value guard-proc with-form-id)|
Convenience form that expands into two definitions:
id is bound to a parameter with the supplied initial-value and guard-proc;
with-form-id is bound to a syntax of the form:
| (with-form-id expr|
| body ...)|
that expands to:
(parameterize ([id expr]) body ...)
| > (define-parameter foo|
| (make-guard integer+false? "(U integer #f)")|
| > (with-foo 10 (foo))|
| > (with-foo "bar" 10)|
Expected (U integer #f), received "bar"