From 91d3bafd2c5f864bb27556efd9dc4dd1885cb460 Mon Sep 17 00:00:00 2001 From: Oliver Payne Date: Fri, 22 Apr 2022 14:44:15 +0100 Subject: [PATCH] Add exercise 3.8 --- 3_8.rkt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 3_8.rkt diff --git a/3_8.rkt b/3_8.rkt new file mode 100644 index 0000000..541c9bb --- /dev/null +++ b/3_8.rkt @@ -0,0 +1,24 @@ +#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