;; ---- c311, Spring 1996 ;; ---- Solutions to Assignment 9, parameters and exceptions (define parameter-while (lambda (p v th) (let ([pval (p)]) (p v) (let ([endval (th)]) (p pval) endval)))) ;; ---- (define raise (lambda (v) (error 'raise "Unhandled exception: ~s" v))) (define try/wall (lambda (body-thunk guard-proc handler-proc) (call/cc (lambda (k) (fluid-let ([raise (let ([outer-raise raise]) (lambda (v) (if (guard-proc v) (fluid-let ([raise outer-raise]) (k (handler-proc v))) (outer-raise v))))]) (body-thunk))))))