Parameter Utilities
1 Getting Started
2 Pseudo-Parameters
pseudo-parameter/  c
3 Parameter Sets

Parameter Utilities

by Dave Herman (dherman at ccs dot neu dot edu) and Sam Tobin-Hochstadt.

This library provides several utilities for parameters.

1 Getting Started

Everything in this library is exported by a single module:

 (require parameter) package: parameter

2 Pseudo-Parameters

A pseudo-parameter is like a Racket parameter, but comprises both an accessor and a mutator function. This can be used, for example, to create compound parameters that simultaneously update multiple parameters.


(make-pseudo-parameter getter setter)  (pseudo-parameter/c a)

  getter : (-> a)
  setter : (a -> any)
Constructs a new pseudo-parameter with getter and setter functions.


(pseudo-parameter? x)  boolean?

  x : any
Determines whether a given value is a pseudo-parameter.


(pseudo-parameter/c c)  contract?

  c : contract?
A contract constructor for pseudo-parameters with an underlying value of contract c.

3 Parameter Sets

A parameter set is a collection of Racket parameters that can be read or written to all at once with a prefab structure. Because the structure is prefab, a parameter set can also easily be marshalled and demarshalled (assuming its values are all writeable, of course).


(define-parameter-set struct-id pseudo-id
  (param-id default-expr maybe-guard) ...)
maybe-guard = 
  | guard-expr
Defines a parameter set. The struct-id is defined as a prefab structure type with one field for each parameter in the set, in declaration order. The pseudo-id is defined as a pseudo-parameter that reads or writes the values of all the parameters in the set simultaneously. Each param-id is defined as a parameter with default value computed by default-expr and optional guard computed by maybe-guard.