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 <j...@cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93

Attachment: README
Description: Binary data

_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to