summaryrefslogtreecommitdiff
path: root/tests/fiboY.lisp
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2019-11-18 18:36:57 +0100
committertomsmeding <tom.smeding@gmail.com>2019-11-18 18:36:57 +0100
commit481884fb892f949478dad8d801ced704baea986c (patch)
tree8c5bcf1d306c8ad3d39d449da8def74cb24dca2d /tests/fiboY.lisp
parent4746aa52f85f4dc3ce8e195f0a5fd8afe2d54378 (diff)
Automatic testing of examples
Diffstat (limited to 'tests/fiboY.lisp')
-rw-r--r--tests/fiboY.lisp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/fiboY.lisp b/tests/fiboY.lisp
new file mode 100644
index 0000000..d12a5ab
--- /dev/null
+++ b/tests/fiboY.lisp
@@ -0,0 +1,24 @@
+(define cadr (l) (car (cdr l)))
+(define caddr (l) (car (cdr (cdr l))))
+
+(define YY (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a))))
+(define Y (YY YY))
+
+(define forX (recur low_high_func)
+ (if (<= (car low_high_func) (cadr low_high_func))
+ (do
+ ((caddr low_high_func) (car low_high_func))
+ (recur (list (+ (car low_high_func) 1) (cadr low_high_func) (caddr low_high_func))))
+ '()))
+
+(define for (Y forX))
+
+(define fibohelperX (recur n_a_b)
+ (if (<= (car n_a_b) 0) (cadr n_a_b)
+ (recur (list (- (car n_a_b) 1) (caddr n_a_b) (+ (cadr n_a_b) (caddr n_a_b))))))
+
+(define fibohelper (Y fibohelperX))
+
+(define fibo (n) (fibohelper (list n 0 1)))
+
+(for (list 1 25 (lambda (n) (print (fibo n)))))