--- /dev/null
+#lang racket
+
+(define (assert? expr) (tagged-list? expr 'assert))
+
+(define (assert-predicate expr) (first (rest expr)))
+
+(define (analyze-assert exp)
+ (let ((pproc (analyze (assert-predicate exp))))
+ (lambda (env succeed fail)
+ (pproc env
+ (lambda (pred-value fail2)
+ (if (not (true? pred-value))
+ (fail)
+ (succeed 'ok fail2)))
+ fail))))
\ No newline at end of file