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) +