I've pushed this change:

http://git.racket-lang.org/plt/commitdiff/d071dc43873b7e84a59e3c9df47a6c8b3f7c6b1d?hp=7b33298b6654bcd55105e24e99545b98db3206ba

Jay

On Mon, Jan 21, 2013 at 9:57 AM, Norman Gray <nor...@astro.gla.ac.uk> wrote:
>
> Jay, hello.
>
> On 2013 Jan 21, at 16:12, Jay McCarthy <jay.mccar...@gmail.com> wrote:
>
>> I don't understand your concern.
>>
>> The response structure, which is the only actual structure (everything
>> else is an interface on it)...
>>
>> a) Allows #f as the mime type
>
> ...but the documentation doesn't say what #f means here.  Does it mean 
> 'dunno, you work it out', or 'there is no content', or 'use some default'? In 
> fact it means "I promise there isn't any output, so so I don't have to tell 
> you a MIME type", but that can only be discovered from experiment or 
> inspecting the source.
>
>> b) Has you provide an 'output' function that does the output. If you
>> don't want there to be any output, then don't write any:
>>
>> (response 304 #"304" (current-seconds) #f empty void)
>
> When I read the documentation for RESPONSE, I thought 'oh dear, it doesn't 
> know about no-content responses', because it reads as if it assumes (and 
> implements) that every HTTP response has a message-body.  Reading "output 
> produces the body" suggests that there's always supposed to be a body, 
> especially because it seems to suggest that it _always_ produces a 
> Content-Type header.  I don't think this is an outrageously wrong reading of 
> the paragraph.
>
>> So, what exactly is it that you want, if not what is already provided?
>
> How about a second paragraph after "An HTTP response..." which reads:
>
>> Certain HTTP responses (with status 1xx, 204 and 304) have no content.  
>> These are correctly generated with a response structure which has #f for 
>> 'mime' and 'void' for 'output'.  Such responses have no message-body, and no 
>> content-length or content-type headers.
>
> An alternative interface would be to have the response structure let output 
> be (or/c false/c (-> output-port? void?)), and indicate that output:#f 
> produces no output, ignores any MIME type and produces no Content-Type 
> header.  That's potentially clearer (easier to guess the effect of) in the 
> no-output case.
>
> (response
>   304 #"Not Modified"
>   (current-seconds)
>   #"IGNORED"
>   (list (make-header #"Location" #"http://racket-lang.org/download";))
>   #f)
>
> Finally: Re-reading what I first wrote, I suspect I was becoming slightly 
> fixated on response/full over response, which meant I was a good bit less 
> clear than I should have been.  Sorry about that.
>
> Best wishes,
>
> Norman
>
>
> --
> Norman Gray  :  http://nxg.me.uk
> SUPA School of Physics and Astronomy, University of Glasgow, UK
>



-- 
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

_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to