[gambit-list] Web design with gambit question

Marc Feeley feeley at iro.umontreal.ca
Wed Nov 25 12:47:32 EST 2009

On 2009-11-25, at 12:31 AM, Alfonso Urroz wrote:

> Marc, I know you have answered this before, but I just wanted to know, where is the web application file or files on Gambit Scheme?

I posted the following message to comp.lang.scheme not too long ago with the code for a barebones HTTP server.


Here's a barebones HTTP server for Gambit.  It should be fairly 
obvious how to extend this to your specific requirements, such as 
handling forms.  If you need something more general check out the 
examples/web-server directory in the Gambit source code distribution. 


;;; File: "simple-http-server.scm" 

(define http-server-address "*:8000") ;; "*:80" is standard 

(define (http-server-start) 
  (let ((accept-port 
         (open-tcp-server (list server-address: http-server-address 
                                eol-encoding: 'cr-lf)))) 
    (let loop () 
      (let ((connection (read accept-port))) 
        (if (not (eof-object? connection)) 
              (http-serve connection) 

(define (http-serve connection) 
  (let ((request (read-line connection))) 
    (if (string? request) 
        (let* ((r 
                 (lambda (p) 
                   (read-all p (lambda (p) 
                                 (read-line p #\space)))))) 
                (car r))) 
          (cond ((string-ci=? method "GET") 
                 (http-get connection (cadr r))) 
                 (println "unhandled request: " request))))) 
    (close-port connection))) 

(define (http-get connection document) 
  (print port: connection 
         "HTTP/1.0 200 OK\n" 
         "Content-Type: text/html; charset=ISO-8859-1\n" 
         "Connection: close\n" 
         "document requested: " document "\n" 


More information about the Gambit-list mailing list