Welcome to the CHICKEN Scheme pasting service

define-handler pasted by hanDerPeder on Tue Nov 25 14:22:20 2014

(define-syntax define-handler
  (ir-macro-transformer
   (lambda (x e t)
     (let ((path (e (cadr x)))
           (body (caddr x))
           (rest (cdddr x)))
       (if (pair? rest) (error "illegal define-handler" x))
       (if (not (equal? (substring (conc (symbol->string path) "   ") 0 4)
                        "/v1/"))
           (error "path must start with /v1/" path))
       `(begin
          (define ,path ,body)
          (set-handler! ,(symbol->string path) ,path))))))

Try this added by sjamaan on Tue Nov 25 14:23:57 2014

(define-syntax define-handler
  (ir-macro-transformer
   (lambda (x i t)
     (let ((path (strip-syntax (cadr x)))
           (body (caddr x))
           (rest (cdddr x)))
       (if (pair? rest) (error "illegal define-handler" x))
       (if (not (equal? (substring (conc (symbol->string path) "   ") 0 4)
                        "/v1/"))
           (error "path must start with /v1/" path))
       `(begin
          (define ,(i path) ,body)
          (set-handler! ,(symbol->string path) ,path))))))

Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Which one-argument R5RS procedure returns 2 when given `'(1 2 3)' as input?
Visually impaired? Let me spell it for you (wav file) download WAV