#lang r5rs
(#%require (only scheme/base
error
print-mpair-curly-braces
print-pair-curly-braces
random)
(planet soegaard/sicp/sicp))
(define-syntax sicp-error
(syntax-rules ()
((_ REASON ARG ...) (error REASON ARG ...))))
(define true #t)
(define false #f)
(define nil '())
(define (identity x) x)
(define (inc x) (+ x 1))
(define (dec x) (- x 1))
(define (sicp-random x)
(if (zero? x)
(error "You called \"(random 0)\". If you're doing SICP section 1.2.6, don't use 1 for the first argument of \"fast-prime?\".")
(random x)))
(define-syntax sicp-syntax-error
(syntax-rules ()
((_) #f)))
(define-syntax check-expect
(syntax-rules ()
((_ VAL EXPECT)
(begin (display "check-expect: ")
(write (quote VAL))
(display " \u21D2 ")
(let ((v VAL)
(e EXPECT))
(display v)
(newline)
(if (equal? val e)
(values)
(error 'check-expect
"Test failed: expected ~S"
e)))))))
(#%provide
(for-syntax syntax-rules ...)
(all-from r5rs)
(all-from (planet soegaard/sicp/sicp))
(rename sicp-error error)
(rename sicp-random random)
check-expect
dec
false
identity
inc
nil
true)