From 0a6f0dd09b3d4989d8647b5862e884e49f814004 Mon Sep 17 00:00:00 2001 From: Chongkai Zhu Date: Wed, 12 Oct 2005 23:15:00 +0000 Subject: [PATCH] SRFI 34 from Schematics svn: r1056 --- collects/drscheme/acks.ss | 6 ++---- collects/srfi/34.ss | 5 +++++ collects/srfi/34/exception.ss | 25 +++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100755 collects/srfi/34.ss create mode 100755 collects/srfi/34/exception.ss diff --git a/collects/drscheme/acks.ss b/collects/drscheme/acks.ss index 1a057870a3..51f7a728da 100644 --- a/collects/drscheme/acks.ss +++ b/collects/drscheme/acks.ss @@ -47,17 +47,15 @@ (define (get-translating-acks) (string-append "Thanks to " + "ChongKai Zhu, " "Ian Barland, " "Biep Durieux, " "Tim Hanson, " "Chihiro Kuraya, " - "Paulo Jorge Matos, " "Philippe Meunier, " "Jens Axel Søgaard, " "Francisco Solsona, " "Reini Urban, " - "Paolo Zoppetti, " "and " - "Zhu Chongkai " + "Paolo Zoppetti " "for their help translating DrScheme's GUI to other languages."))) - diff --git a/collects/srfi/34.ss b/collects/srfi/34.ss new file mode 100755 index 0000000000..c8913ed805 --- /dev/null +++ b/collects/srfi/34.ss @@ -0,0 +1,5 @@ +;; module loader for SRFI-34 +(module |34| mzscheme + (require (lib "exception.ss" "srfi" "34")) + (provide (all-from (lib "exception.ss" "srfi" "34")) + raise)) diff --git a/collects/srfi/34/exception.ss b/collects/srfi/34/exception.ss new file mode 100755 index 0000000000..ba620f4414 --- /dev/null +++ b/collects/srfi/34/exception.ss @@ -0,0 +1,25 @@ +;; SRFI 34 for PLT Scheme +;; Zhu Chongkai, April 2005 +;; +(module exception mzscheme + + (provide with-exception-handler + guard) + + (define-syntax with-exception-handler + (syntax-rules () + ((_ handler thunk) + (with-handlers (((lambda (exn) #t) handler)) (thunk))))) + + (define-syntax guard + (syntax-rules (else) + ((_ (var clause ... (else de ...)) e1 e2 ...) + (with-handlers (((lambda (exn) #t) + (lambda (var) (cond clause ... + (else de ...))))) + e1 e2 ...)) + ((_ (var clause ...) e1 e2 ...) + (with-handlers (((lambda (exn) #t) + (lambda (var) (cond clause ... + (else (raise var)))))) + e1 e2 ...)))))