From 41a04a9d943c6a341d445328869afabe3a63e253 Mon Sep 17 00:00:00 2001 From: Peter Tillemans Date: Wed, 13 Mar 2024 23:52:26 +0100 Subject: [PATCH] add mutation assignment lesson --- 10_mutation_assignment.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 10_mutation_assignment.scm diff --git a/10_mutation_assignment.scm b/10_mutation_assignment.scm new file mode 100644 index 0000000..d27fe09 --- /dev/null +++ b/10_mutation_assignment.scm @@ -0,0 +1,34 @@ +;; -*- geiser-scheme-implementation: guile -*- + +(define chest 'sword) + +chest ; sword + +(set! chest 'gold) ; # + +chest ; gold + + +(define (make-countdown n) + (lambda () + (define last-n n) + (if (zero? n) + 0 + (begin + (set! n (- n 1)) + last-n)))) +(define cdown (make-countdown 3)) + +(cdown) ; 3 +(cdown) ; 2 +(cdown) ; 1 +(cdown) ; 0 +(cdown) ; 0 + +(define vec (vector 'a 'b 'c)) +vec ; #(a b c) +(vector-ref vec 1) ; b +(vector-set! vec 1 'boop) +(vector-ref vec 1) ; boop +vec ; #(a boop c) +