diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-04 17:59:36 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-04 17:59:36 +0100 |
| commit | ad461cbbbf839d040cda5d38f72072bbc20b5e4f (patch) | |
| tree | 20f593c75a7f8ba3d58df090bf0f802be2b80095 | |
| parent | 9bb48cc50a438467ff029e1fb5726287b8408acc (diff) | |
fixup
| -rw-r--r-- | shared/chapter1.rkt | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/shared/chapter1.rkt b/shared/chapter1.rkt index 9978db2..ef01106 100644 --- a/shared/chapter1.rkt +++ b/shared/chapter1.rkt @@ -29,6 +29,25 @@ smallest-divisor) (require sicp) +;;abstract procedures +(define (iterative-improve good-enuf? improve) + (lambda (guess) + (define (try g) + (let ((next (improve g))) + (if (good-enuf? next g) + next + (try next)))) + (try guess))) + +(define (filtered-accumulate pred combiner null-value term a next b) + (define (iter a result) + (cond + ((> a b) result) + ((pred a) + (iter (next a) (combiner (term a) result))) + (else (iter (next a) result)))) + (iter a null-value)) + ;; basic (define (cube x) (* x x x)) (define (square x) (* x x)) @@ -113,6 +132,12 @@ true)) false))) +(define (fixed-point f first-guess) + ((iterative-improve + (close-enough? 0.0001) + f) + first-guess)) + (define (golden-ratio) (fixed-point (lambda (x) (+ 1 (/ 1 x))) @@ -171,29 +196,3 @@ ((miller-raban-test (- a 1) n) (iter (- a 1) n)) (else false))) (iter n n)) - -;;abstract procedures -(define (iterative-improve good-enuf? improve) - (lambda (guess) - (define (try g) - (let ((next (improve g))) - (if (good-enuf? next g) - next - (try next)))) - (try guess))) - -(define (fixed-point f first-guess) - ((iterative-improve - (close-enough? 0.0001) - f) - first-guess)) - -(define (filtered-accumulate pred combiner null-value term a next b) - (define (iter a result) - (cond - ((> a b) result) - ((pred a) - (iter (next a) (combiner (term a) result))) - (else (iter (next a) result)))) - (iter a null-value)) - |
