diff --git a/collects/srfi/39.ss b/collects/srfi/39.ss index 98c180b56b..818336bb56 100644 --- a/collects/srfi/39.ss +++ b/collects/srfi/39.ss @@ -1,3 +1,18 @@ -;; Supported by core PLT: +;; Supported by core PLT, with a slight difference in how a guard is used: #lang scheme/base -(provide make-parameter parameterize) + +(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)