summaryrefslogtreecommitdiffstats
path: root/one/eleven.scm
diff options
context:
space:
mode:
Diffstat (limited to 'one/eleven.scm')
-rw-r--r--one/eleven.scm41
1 files changed, 0 insertions, 41 deletions
diff --git a/one/eleven.scm b/one/eleven.scm
deleted file mode 100644
index a95b7ab..0000000
--- a/one/eleven.scm
+++ /dev/null
@@ -1,41 +0,0 @@
-;;;; Under Creative Commons Attribution-ShareAlike 4.0
-;;;; International. See
-;;;; <https://creativecommons.org/licenses/by-sa/4.0/>.
-
-(define-module (one eleven)
- #:export (recursive-fn
- make-cache
- alt-recursive-fn))
-
-(define (recursive-fn n)
- (cond ((<= n 3) n)
- (else (+ (* 1 (recursive-fn (- n 1)))
- (* 2 (recursive-fn (- n 2)))
- (* 3 (recursive-fn (- n 3)))))))
-
-;;;; alternative version. faster but ugly.
-
-(define (make-cache)
- (let ((cache (make-hash-table)))
- (define (get key)
- (hash-get-handle cache key))
- (define (set key value)
- (hash-create-handle! cache key value)
- ;; return value as a side effect.
- value)
- (lambda args
- (apply (case (car args)
- ((get) get)
- ((set) set)
- (else (error "Invalid method")))
- (cdr args)))))
-
-(define (alt-recursive-fn cache n)
- (let ((v (cache 'get n)))
- (cond (v (cdr v))
- ((<= n 3)
- (cache 'set n n))
- (else (cache 'set n
- (+ (* 1 (alt-recursive-fn cache (- n 1)))
- (* 2 (alt-recursive-fn cache (- n 2)))
- (* 3 (alt-recursive-fn cache (- n 3)))))))))