From 542fc334464dfade8fe5517b8756f67b82679c3e Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Fri, 23 Jul 2010 01:21:50 +0530 Subject: [PATCH] text examples upto 2.2.3 --- src/sicp/ch2_2.clj | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/sicp/ch2_2.clj b/src/sicp/ch2_2.clj index 2fd2f9e..e0107f5 100644 --- a/src/sicp/ch2_2.clj +++ b/src/sicp/ch2_2.clj @@ -1,4 +1,5 @@ -(ns sicp.ch2_2) +(ns sicp.ch2_2 + (:refer-clojure :exclude (map))) (cons 1 (cons 2 @@ -88,4 +89,19 @@ (cond (nil? coll) 0 (not (seq? coll)) 1 :else (+ (count-leaves (first coll)) - (count-leaves (next coll))))) \ No newline at end of file + (count-leaves (next coll))))) + +;; mapping over trees +(defn scale-tree [tree factor] + (cond (nil? tree) nil + (not (seq? tree)) (* tree factor) + :else (cons (scale-tree (first tree) factor) + (scale-tree (next tree) factor)))) + +;; using map +(defn scale-tree-with-map [tree factor] + (map (fn [sub-tree] + (if (seq? sub-tree) + (scale-tree-with-map sub-tree factor) + (* sub-tree factor))) + tree)) \ No newline at end of file -- 2.45.2