(define pl (lambda x (write x)(newline))) (define (ex m v) (write (list 'ex m v))(newline) v) (define (filter f) (lambda (m) (if (integer? m) (let ((a (f m))) (if (integer? a) a))))) (define newseal (lambda (nullOb) (let ((content nullOb)) (cons (lambda (Ob) (lambda () (set! content Ob))) (lambda (box) (set! content nullOb) (box) (let ((r content)) (set! content nullOb) r)))))) (let ( (X (lambda (U p) (let ((a (U (lambda () (p 1))))) (pl 'X a )(p a)))) (Y (lambda (B) (lambda (m) (if (= m 1) (B) (pl 'Y m)) 0)))) (let* ( (p (newseal '())) (S (car p)) (U (cdr p)) (b 42) (B (S b))) (let ((yp (Y B))) (X U (filter yp))) (pl 'Bye))) ; => (X 42) (Y 42) Bye