21 Parameter Groups
(require unstable/parameter-group) | |
package: unstable-parameter-group-lib |
Parameter groups are parameter-like views that represent multiple parameters.
> (require unstable/parameter-group) > (define param1 (make-parameter 1)) > (define param2 (make-parameter 2)) > (define-parameter-group params (param1 param2)) > (params) (params-value 1 2)
> (parameterize/group ([params (params-value 10 20)]) (list (param1) (param2))) '(10 20)
> (params) (params-value 1 2)
> (params (params-value 100 200)) > (list (param1) (param2)) '(100 200)
Use parameter groups to conveniently set multiple parameters. For example, the plot library uses parameter groups to save and restore appearance-controlling parameters when it must draw plots within a thunk.
procedure
(parameter-group? v) → boolean?
v : any/c
syntax
(define-parameter-group name (param-or-group-expr ...) options)
options =
| #:struct struct-name
param-or-group-expr : (or/c parameter? parameter-group?)
If struct-name is not given, define-parameter-group defines a new struct <name>-value to hold the values of parameters.
If struct-name is given, it must have a constructor (struct-name param-or-group-expr ...) that accepts as many arguments as there are parameters in the group, and a struct-name match expander that accepts as many patterns as there are parameters.
> (struct two-params (p1 p2) #:transparent) > (define-parameter-group params* (param1 param2) #:struct two-params) > (params*) (two-params 100 200)
syntax
(parameterize/group ([param-or-group-expr value-expr] ...) body-expr ...+)
param-or-group-expr : (or/c parameter? parameter-group?)
syntax
(parameterize*/group ([param-or-group-expr value-expr] ...) body-expr ...+)
param-or-group-expr : (or/c parameter? parameter-group?)