diff options
author | rsiddharth <s@ricketyspace.net> | 2019-08-10 17:19:06 -0400 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2019-08-10 17:19:06 -0400 |
commit | f8310270c46eac78e337d178964b98f186266427 (patch) | |
tree | 8fd2503a91a0c6c14ff3b5eed26b1330370979a4 | |
parent | edceb3f93561dab1c688e3748bc55aa357361639 (diff) |
Add (net rickteyspace sicp two thirtyone).
-rw-r--r-- | net/ricketyspace/sicp/two/thirtyone.scm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/net/ricketyspace/sicp/two/thirtyone.scm b/net/ricketyspace/sicp/two/thirtyone.scm new file mode 100644 index 0000000..6420e25 --- /dev/null +++ b/net/ricketyspace/sicp/two/thirtyone.scm @@ -0,0 +1,22 @@ +;;;; License: CC0-1.0 + +(define-module (net ricketyspace sicp two thirtyone) + #:export (tree-map + square-tree)) + +(define (tree-map fun tree) + (cond ((null? tree) '()) + ((not (pair? tree)) (fun tree)) + (else (cons (tree-map fun (car tree)) + (tree-map fun (cdr tree)))))) + +(define (square-tree tree) (tree-map (lambda (x) (* x x)) tree)) + +;;; Guile REPL +;;; +;;; scheme@(guile-user)> ,user (net ricketyspace sicp two thirtyone) +;;; scheme@(guile-user)> (square-tree +;;; (list 1 +;;; (list 2 (list 3 4) 5) +;;; (list 6 7))) +;;; $2 = (1 (4 (9 16) 25) (36 49)) |