summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--guile/taocp/utils/math.scm18
1 files changed, 16 insertions, 2 deletions
diff --git a/guile/taocp/utils/math.scm b/guile/taocp/utils/math.scm
index 768d30d..7d49c10 100644
--- a/guile/taocp/utils/math.scm
+++ b/guile/taocp/utils/math.scm
@@ -2,8 +2,10 @@
;;;; under gnu general public license version 3 or higher.
(define-module (taocp utils math)
- #:export (compute-exp1-n))
-
+ #:use-module (srfi srfi-1)
+ #:export (compute-exp1-n
+ fib
+ fib-range))
(define (compute-exp1-n fx n)
"Evaluate function FX for `x` equals 1 to N and return all results
@@ -15,3 +17,15 @@ For instance `(lambda (x) (* x x))` is a valid FX.
"
(cond ((= n 0) '())
(else (cons (fx n) (compute-exp1-n fx (1- n))))))
+
+(define (fib n)
+ "Returns Fibonacci of N."
+ (cond ((= n 0) 0)
+ ((= n 1) 1)
+ (else (+ (fib (- n 1)) (fib (- n 2))))))
+
+(define (fib-range start end)
+ "Returns Fibonacci sequence between START and END."
+ (let ((f (lambda (x) (cons x (fib x))))
+ (count (1+ (- end start ))))
+ (map f (iota count start))))