[racket] Racket Web Server

From: Gerry Weaver (gerryw at compvia.com)
Date: Mon Dec 12 02:29:44 EST 2011

Hello All,

Neil points out something that I've been meaning to ask about. What exactly are the benefits of a continuation based design? Is the web server using it as some type of multitasking or coroutine feature? I think I have a basic understanding of what continuations are and how they work. I'm just not sure the benefits justify the liability (in terms of accessibility/maintainability). I could certainly understand the need to use them for a coroutine library though. I've seen literally dozens of statements extolling the power of continuations, but no one ever seems to provide a foundation for the statement. My current take on this is that they should be used very sparingly if at all. Would one of y'all please enlighten me?    


-----Original Message----- 
> From: "Neil Van Dyke" <neil at neilvandyke.org> 
> To: "Jordan Schatz" <jordan at noionlabs.com> 
> Cc: users at racket-lang.org 
> Date: 12/12/11 00:03 
> Subject: Re: [racket] Racket Web Server 
> Jordan Schatz wrote at 12/11/2011 10:15 PM:
> > On Sun, Dec 11, 2011 at 04:25:46PM -0600, Gerry Weaver wrote:
> >    
> >> I am new to Racket and Lisp/Scheme in general. I am trying to write a
> >> simple rest web service in Racket, but I'm not making much
> >> progress.
> It's doable with the Racket Web Server.  Part of the difficulty people 
> might be seeing is that the Racket Web Server is big on 
> continuation-based Web serving, which is both very powerful and very 
> difficult to understand initially.  If you're trying to "write Fortran 
> in any language" by doing non-continuation-based serving, there's a lot 
> of other stuff there to confuse you.
> Also, don't get frustrated by the documentation: when I first did a Web 
> app using the Racket Web Server, I had 10 years of Racket/Scheme 
> experience, and I was still confused about which choices I should be 
> making and how to do familiar things within those.  Once I found some 
> things that worked, however, I blew through the app more quickly than I 
> could've with any language and framework I've seen.
> (At this point, the author(s) of the Racket Web Server might be thinking 
> "We've put expert person-years into design, code, entire manuals, and 
> tutorials... what more could anyone need?" :)
> > So I have started to collect
> > the info I find, problems I encounter etc into a "missing manual" and
> > would love to collaborate on it if you are interested. I intend for it to
> > be something of a quick start for someone who already knows how to
> > develop, but is new to lisp, functional programing, and the racket web
> > server.
> I have been working, on-and-off, on such a book recently.  If only 
> billionaire J.K. Rowling's publisher would answer my phone calls and 
> letters about a hefty advance against royalties, my attention would not 
> be so divided.
> Incidentally, there is an awkward situation with Racket books targeting 
> professional developers: every time nowadays I have to do something in 
> Java (I was an early Java app developer), and Google for answers to 
> technical questions about contemporary Java frameworks and libraries, I 
> am horrified that the vast majority of people attempting answers in 
> developer forums seem to have little idea what they're doing.  So, while 
> I would like my book to poach from among the smartest 20% of Java 
> developers, I think that the lower 80% need a very different book before 
> they could do good work in Racket, and I wouldn't even try to write that 
> book for the 80%.  Here's an early rough draft of paragraphs 2-4 of my 
> irreverent book for the 20%, right before paragraph 5 puts any surviving 
> readers into the pool.  I'll revisit the intro if the rest of the book 
> ever gets done.
>  > [TITLE] is targeted at people who already have software
>  > development experience, and who are smarter than the
>  > average bear.  Smarter, in the sense of learning from their
>  > experience, and continually finding and adopting better
>  > ways to do things.
>  > Is [TITLE] not yet for you?  People who are new to
>  > Computer Science, or who do not have much experience with
>  > programming languages, are better served by first working
>  > their way through the textbook,
>  > @hyperlink["http://www.htdp.org/"]{@italic{How to Design
>  > Programs} (HtDP)}.  HtDP will not teach you Racket, but it
>  > will help build you up from ground zero to think about
>  > problem-solving, laying a good foundation for then
>  > learning Racket.
>  > The mention above of [TITLE] being for people who are
>  > smarter than the average bear is not only a clever ploy to
>  > increase book sales by flattering the reader.  Some people
>  > are more comfortable, in the work aspects of their lives,
>  > relaxing into the leisurely pace of, say, a pigeon.  A
>  > pigeon's life is simple, if slow and tedious.  There is
>  > nothing wrong with that, and indeed pigeons perform a
>  > useful function of cleaning urban parks of lunch scraps.
>  > Pigeons also defecate all over everything, and their guano
>  > can even infect others with disease.  Racket is not for
>  > pigeons.
> -- 
> http://www.neilvandyke.org/
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users

Posted on the users mailing list.