Giving special consideration to Eli and YC's perspectives, I've come up with the following way out of this problem.
I found a way to provide a global hook that is tasteful to me. I've created
"dynamic/c". Here's a little example:
Examples:
(define p (make-parameter any/c))
(define c (dynamic/c string? p number?))
> (contract c "123" 'pos 'neg)
pos broke the contract
(dynamic
string?
#<procedure:parameter-procedure>
number?)
on eval:5:0; expected <number?>, given: "123"
> (p (coerce/c string->number))
> (contract c "123" 'pos 'neg)
123
> (contract c "123a" 'pos 'neg)
pos broke the contract
(dynamic
string?
#<procedure:parameter-procedure>
number?)
on eval:8:0; Coercion failed
The Web Server will define response/c as (dynamic/c any/c current-response/c
response?) and provide the current-response/c parameter for customization.
The default will be no coercion, but Xexpr conversion will be easily
accessible. A compatibility library will automatically set
current-response/c appropriately.
Attached is the new compatibility README.
I hope this will satisfy all.
Jay
--
Jay McCarthy <[email protected]>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay
"The glory of God is Intelligence" - D&C 93
README
Description: Binary data
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev

