starting with section 2.2.2
authorRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Fri, 2 Jul 2010 07:18:44 +0000 (12:48 +0530)
committerRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Fri, 2 Jul 2010 07:18:44 +0000 (12:48 +0530)
src/sicp/ch2_2.clj

index 7af50401ebaf7beaf676c5fe3b5aa2fea4b575e5..2fd2f9ea2ae109a893d2be87b0bfdc623110a3a5 100644 (file)
          (append (rest list1) list2))))
 
 (append one-thru-four one-thru-four)
-;;=> (1 2 3 4 1 2 3 4)
\ No newline at end of file
+;;=> (1 2 3 4 1 2 3 4)
+
+;; mapping over lists
+(defn scale-list [items factor]
+  (if (empty? items)
+    nil
+    (cons (* factor (first items))
+         (scale-list (rest items) factor))))
+
+(defn map [proc items]
+  (if (empty? items)
+    nil
+    (cons (proc (first items))
+         (map proc (rest items)))))
+
+(defn scale-list-with-map [items factor]
+  (map (fn [item] (* item factor)) items))
+
+;; 2.2.2
+(def x (cons (list 1 2) (list 3 4)))
+
+(length x)
+;;=> 3
+
+;; count-leaves
+(defn count-leaves [coll]
+  (cond (nil? coll)       0
+       (not (seq? coll)) 1
+       :else (+ (count-leaves (first coll))
+                (count-leaves (next coll)))))
\ No newline at end of file