racket/collects/srfi/39.rkt
2010-04-27 16:50:15 -06:00

19 lines
739 B
Racket

;; Supported by core PLT, with a slight difference in how a guard is used:
#lang scheme/base
(define make-parameter*
(let ([make-parameter
(case-lambda
[(v) (make-parameter v)]
[(v guard) (make-parameter (if (and (procedure? guard)
(procedure-arity-includes? guard 1))
;; apply guard to initial value:
(guard v)
;; let `make-parameter' complain:
v)
guard)])])
make-parameter))
(provide (rename-out [make-parameter* make-parameter])
parameterize)