On this page:

21 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"