#lang sicp (define f (let ((x 0)) (lambda (n) (let ((old-x x)) (begin (set! x n) (cond ((= n 0) (if (= old-x 0) -1 0)) (else n))))))) (define left-to-right (let ((left (f 0)) (right (f 1))) (+ left right))) (define right-to-left (let ((right (f 1)) (left (f 0))) (+ left right))) ;; (f 0) first: (+ (f 0) (f 1)) -> 0 ;; (f 1) first: (+ (f 0) (f 1)) -> 1