diff options
Diffstat (limited to 'iterative-add')
-rw-r--r-- | iterative-add/iterative-add-test.scm | 20 | ||||
-rw-r--r-- | iterative-add/iterative-add.scm | 15 |
2 files changed, 35 insertions, 0 deletions
diff --git a/iterative-add/iterative-add-test.scm b/iterative-add/iterative-add-test.scm new file mode 100644 index 0000000..d318570 --- /dev/null +++ b/iterative-add/iterative-add-test.scm @@ -0,0 +1,20 @@ +;; -*- compile-command: "guile -L . iterative-add-test.scm"; -*- +(use-modules (srfi srfi-64) + (iterative-add)) + + +(test-begin "harness") + +(test-equal "add 0 to 1" + 1 + (iterative-add-generator 1)) + +(test-equal "add 1 to 2" + 3 + (iterative-add-generator 2)) + +(test-equal "add 2 to 6" + 8 + (iterative-add-generator 6)) + +(test-end "harness") diff --git a/iterative-add/iterative-add.scm b/iterative-add/iterative-add.scm new file mode 100644 index 0000000..45c6cf9 --- /dev/null +++ b/iterative-add/iterative-add.scm @@ -0,0 +1,15 @@ +(define-module (iterative-add) + #:export (iterative-add-generator)) + +(define iterative-add + (let ((prev-num 0)) + (lambda (num) + (let ((result + (+ num prev-num))) + (set! prev-num num) + result)))) + +(define (iterative-add-generator num) + "Adds the previously received +number to the current one." + (iterative-add num)) |