(begin (define counted-member (counter-maker member)) (define counted-cons (counter-maker cons)) (counted-member 'count (counted-cons 'I (counted-cons 'can (counted-cons 'count (counted-cons 'this! (counted-cons (counted-cons 'count) '()))))))) (begin (define counted-member (counter-maker member)) (define counted-cons (counter-maker cons)) (counted-member 'count (counted-cons 'I (counted-cons 'can (counted-cons 'count (counted-cons 'this! '()))))) (counted-member 'count) ) (begin (define counted-member (counter-maker member)) (define counted-cons (counter-maker cons)) (counted-member 'count (counted-cons 'I (counted-cons 'can (counted-cons 'count (counted-cons 'this! ' ()))))) (counted-member 'count) (counted-cons (counted-member 'count) (counted-cons 'count)) ) (begin (define counted-member (counter-maker member)) (define counted-cons (counter-maker cons)) (counted-member 'count (counted-cons 'I (counted-cons 'can (counted-cons 'count (counted-cons 'this! '()))))) (counted-member 'count) (counted-cons (counted-member 'count) (counted-cons 'count)) (counted-cons 'count) ) (begin (define fact (lambda (n) (if (zero? n) 1 (* n (fact (- n 1)))))) (define counted-fact (counter-maker fact)) (define fact-list (map counted-fact '(1 2 3 4 5 6))) (list fact-list (counted-fact 'count))) (eval-one-exp '(let ([x (vector 1) ] [y 5]) (let loop () (when (> y 2) (vector-set! x 0 (+ (vector-ref x 0) (* y (+ 1 y)))) (set! y (- y 1)) (loop))) x)) (eval-one-exp '(let ([x (vector 1) ] [y 5]) (let loop () (unless (< y 3) (vector-set! x 0 (+ (vector-ref x 0) (* y (+ 1 y)))) (set! y (- y 1)) (loop))) x)) (eval-one-exp '(let ([x (vector 1) ] [y 5]) (while (< (vector-ref x 0) 300) (let loop () (when (> y 2) (vector-set! x 0 (+ (vector-ref x 0) (* y (+ 1 y)))) (set! y (- y 1)) (loop))) (set! y 5)) x)) (eval-one-exp '(let ([x (vector 1) ] [y 5]) (while (< (vector-ref x 0) 300) (let loop () (unless (< y 3) (vector-set! x 0 (+ (vector-ref x 0) (* y (+ 1 y)))) (set! y (- y 1)) (loop))) (set! y 5)) x)) (eval-one-exp '(+ 5 ((escaper *) 6 7))) (eval-one-exp '(let ([escape-* (escaper *)]) (- 6 (escape-* 7 8)))) (eval-one-exp '(procedure? escaper)) (eval-one-exp '(procedure? (escaper +))) (eval-one-exp '(procedure? ((escaper +) 3 5))) (eval-one-exp '(let ([escape-* (escaper *)]) (- 6 (escape-* 4 (escape-* 7 8))))))