On this page:
make-guard
define-parameter
Version: 4.1.4.1

18 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.

Examples:

  > (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:

Examples:

  > (define-parameter foo
      #f
      (make-guard integer+false? "(U integer #f)")
      with-foo)
  > (with-foo 10 (foo))

  10

  > (with-foo "bar" 10)

  Expected (U integer #f), received "bar"