Reimplemented assert as a macro.

original commit: 8dfd7d87ecd5d167514f8c7c5468448c6ad86547
This commit is contained in:
Vincent St-Amour 2010-06-15 12:27:28 -04:00
parent eed1167639
commit e6d4962b46

View File

@ -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"))))))