From 897fb17dd6a045a7056e6d6babbbb24748f698f6 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sat, 9 Dec 2017 10:48:58 +0100 Subject: Initial --- fiboY.lisp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 fiboY.lisp (limited to 'fiboY.lisp') diff --git a/fiboY.lisp b/fiboY.lisp new file mode 100644 index 0000000..f46c00a --- /dev/null +++ b/fiboY.lisp @@ -0,0 +1,39 @@ +(define YY (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a)))) +(define Y (YY YY)) + +(define forX (recur (low high func)) + (if (low <= high) + (do + (func low) + (recur (list (+ low 1) high func))) + '())) + +(define for (Y forX)) + +(define fibohelperX (recur (n a b)) + (if (n <= 0) a + (recur (list (- n 1) b (+ a b))))) + +(define fibohelper (Y fibohelperX)) + +(define fibo (n) (fibohelper (n 0 1))) + + + + + +; Fill in the dots with the lines below... +; If you're done, try to dump the whole expression into test.hs. + +; ((lambda (YY) ...) (lambda (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a))))) +; +; ((lambda (Y) ...) (YY YY)) +; +; ((lambda (forX) ...) (lambda (recur args) ; args: (low high func) +; (if ((car args) <= (cadr args)) +; (do +; ((cadr (cdr args)) (car args)) +; (recur (list (+ low 1) high func))) +; '()))) + + -- cgit v1.2.3-54-g00ecf