From b8aadcc1283413dd86f3edfe6a4c90e4af99d455 Mon Sep 17 00:00:00 2001 From: Oliver Payne Date: Thu, 20 May 2021 23:02:13 +0100 Subject: [PATCH] Add 2.5 and 2.6 --- 2_5.sch | 18 ++++++++++++++++++ 2_6.sch | 13 +++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 2_5.sch create mode 100644 2_6.sch diff --git a/2_5.sch b/2_5.sch new file mode 100644 index 0000000..acf46d2 --- /dev/null +++ b/2_5.sch @@ -0,0 +1,18 @@ +(define (cons a b) + (* (power 2 a) (power 3 b))) + +(define (power x n) + (if (= n 0) + 1 + (* x (power x (- n 1))))) + +(define (iter x n p) + (if (> (remainder x n) 0) + p + (iter (quotient x n) n (+ 1 p)))) + +(define (car z) + (iter z 2 0)) + +(define (cdr z) + (iter z 3 0)) diff --git a/2_6.sch b/2_6.sch new file mode 100644 index 0000000..009fc3c --- /dev/null +++ b/2_6.sch @@ -0,0 +1,13 @@ +(define zero (lambda (f) (lambda (x) x))) + +(define (add-1 n) + (lambda (f) (lambda (x) (f ((n f) x))))) + +(define one + (lambda (f) (lambda (x) (f x)))) + +(define two + (lambda (f) (lambda (x) (f (f x))))) + +(define (plus a b) + (lambda (f) (lambda (x) ((a f) ((b f) x)))))