I'd like to thank everyone for their advice.  I'm going to definitely
explore the Racket's webserver and step back and look at existing Rack
middleware implementations to determine if I can use a different
construct besides hash-manipulations.

--
Chad


On Tue, May 15, 2012 at 8:23 PM, Robby Findler
<ro...@eecs.northwestern.edu> wrote:
> I guess you probably need to step back and understand how things tend to
> mutate this hash and look for another construct that more accurately
> captures the interesting use cases for mutating the hash. That is, hash
> mutation is a kind of do-anything assembly language and until you have a
> good handle on what "anything" might be in the usual case, then you can
> design a construct to replace it. (Also, you will find that there are
> invariants that you can express too, and even check when you move away from
> the hashs (I hope).)
>
> My $0.02,
> Robby
>
> On Tuesday, May 15, 2012, Chad Albers wrote:
>>
>> Hi,
>>
>> I'm working on project to port the Ruby Rack framework to Racket scheme.
>> If you're not familiar with Rack,  it creates a layer to manage the http
>> response/requests, and a level of abstraction to build a chained list of
>> middle ware clients - each calling the next in chain.
>>
>> Switching from from Ruby's OOP paradigm to Scheme's more functional
>> paradigm, a problem has presented itself that I would like some advice on.
>>
>> In the Rack middleware in the chain, each piece of the middleware receives
>> a hash which encapsulates the response/requests, and the middleware mutates
>> this hash depending on the functionality it adds.
>>
>> I could port this hash exchange in my Racket implementation, but I have an
>> aversion to the side effects inherently in mutating this hash.   My
>> question, then, is does anyone have a more functional approach to how I
>> could implement this middleware chain?
>>
>> Any advice anyone could offer would be greatly appreciated.  I'm going to
>> open sourcing the project soon.
>> --
>> Chad
>>
>

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to