Files
emacs.d/elpa/racket-mode-20171116.1435/try-catch.rkt
Mateus Pinto Rodrigues 2362e805bd Add new packages installed
2018-03-27 20:52:59 -03:00

18 lines
537 B
Racket

#lang racket/base
(require (for-syntax racket/base
syntax/parse))
(provide try)
;; Some try/catch syntax. Because `with-handlers` can be
;; exceptionally bass-ackwards when nested (pun intended).
(define-syntax (try stx)
(define-splicing-syntax-class catch-clause
(pattern (~seq #:catch pred:expr id:id e:expr ...+)
#:with handler #'[pred (lambda (id) e ...)]))
(syntax-parse stx
[(_ body:expr ...+ catch:catch-clause ...+)
#'(with-handlers (catch.handler ...)
body ...)]))