summaryrefslogtreecommitdiff
path: root/iterative-add
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2024-06-09 00:16:27 -0600
committerbd <bdunahu@operationnull.com>2024-06-09 00:16:27 -0600
commitcd47b52a406ebed5b3f82e51168ead27af3795d9 (patch)
tree78ad89d67dc77e49636634c1237edf6389c5b2d8 /iterative-add
parent6b40eb033d9c0bda4006f23426c34ef8fda4a0d5 (diff)
AoC 2020.1 p1
Diffstat (limited to 'iterative-add')
-rw-r--r--iterative-add/iterative-add-test.scm20
-rw-r--r--iterative-add/iterative-add.scm15
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))