diff --git a/scheme/httpd/surflets/surflets.scm b/scheme/httpd/surflets/surflets.scm index 6861da9..9b55c85 100644 --- a/scheme/httpd/surflets/surflets.scm +++ b/scheme/httpd/surflets/surflets.scm @@ -690,7 +690,7 @@ ;; This is from Martin Gasbichler (define-syntax case-returned-via - (syntax-rules (else) + (syntax-rules (else =>) ((case-returned-via (%bindings ...) clauses ...) (let ((bindings (%bindings ...))) (case-returned-via bindings clauses ...))) @@ -700,9 +700,20 @@ ((%return-object ...) %body ...)) (if (or (returned-via? %return-object bindings) ...) (begin %body ...))) + ((case-returned-via bindings + ((%return-object ...) => %proc)) + (cond ((or (returned-via %return-object bindings) ...) + => %proc))) ((case-returned-via bindings ((%return-object ...) %body ...) %clause %clauses ...) (if (or (returned-via? %return-object bindings) ...) (begin %body ...) - (case-returned-via bindings %clause %clauses ...))))) + (case-returned-via bindings %clause %clauses ...))) + ((case-returned-via bindings + ((%return-object ...) %proc) + %clause %clauses ...) + (cond ((or (returned-via %return-object bindings) ...) + => %proc) + (else + (case-returned-via bindings %clause %clauses ...))))))