From cd47b52a406ebed5b3f82e51168ead27af3795d9 Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 9 Jun 2024 00:16:27 -0600 Subject: AoC 2020.1 p1 --- iterative-add/iterative-add-test.scm | 20 ++++++++++++++++++++ iterative-add/iterative-add.scm | 15 +++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 iterative-add/iterative-add-test.scm create mode 100644 iterative-add/iterative-add.scm (limited to 'iterative-add') 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)) -- cgit v1.2.3