From e6d4962b4611380024cea4bbadaf45195bf1ef1f Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 15 Jun 2010 12:27:28 -0400 Subject: [PATCH] Reimplemented assert as a macro. original commit: 8dfd7d87ecd5d167514f8c7c5468448c6ad86547 --- collects/typed-scheme/private/extra-procs.rkt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/collects/typed-scheme/private/extra-procs.rkt b/collects/typed-scheme/private/extra-procs.rkt index 6cd86438..b4a74b03 100644 --- a/collects/typed-scheme/private/extra-procs.rkt +++ b/collects/typed-scheme/private/extra-procs.rkt @@ -1,8 +1,10 @@ #lang scheme/base (provide assert) -(define (assert v [pred values]) - (unless (pred v) - (error "Assertion failed")) - v) - +(define-syntax assert + (syntax-rules () + ((assert v) + (or v (error "Assertion failed"))) + ((assert v pred) + (let ((val v)) + (if (pred val) val (error "Assertion failed"))))))