   (first (filter vampire?
                  (map vampire-related-details social-security-numbers))))
 
-;; (time (identify-vampire (range 0 10000)))
-;; "Elapsed time: 32007.469024 msecs"
-;; => {:makes-blood-puns? true, :has-pulse? false, :name "Damon Salvatore"}
+;; don't run when compiling or testing
+;;(fact
+;;  (time (identify-vampire (range 0 10000)))
+;; ;; "Elapsed time: 32007.469024 msecs"
+;;  => {:makes-blood-puns? true, :has-pulse? false, :name "Damon Salvatore"})
 
 ;; doall realizes all elements of a lazy sequence
+
 
 ;;;;;;;;;;;;;;;;;;;;;;
 ;; Infinite equences
+;;;;;;;;;;;;;;;;;;;;;;
 
 (fact "'repeat' infinite repeated sequence"
   (concat (take 8 (repeat "na")) ["Batman!"])
   => '("na" "na" "na" "na" "na" "na" "na" "na" "Batman!"))
 
 ;; repeates the output of a fucntion
-(take 3 (repeatedly (fn [] (rand-int 10))))
+;(take 3 (repeatedly (fn [] (rand-int 10))))
 ;; => (9 7 1)
 
 (defn even-numbers
-  "infinite sequence of even numbers"
+  "lazy infinite sequence of even numbers"
   ([] (even-numbers 0))
   ([n] (cons n (lazy-seq (even-numbers (+ n 2))))))
 

  [numbers]
  (map #(% numbers) [sum count avg]))

(fact (stats [3 4 10])  => '(17 3 17/3))
(fact (stats [10 1 44 13 6])  => '(74 5 74/5))


;;;;;;;;;;;;;;;;;;;;;;;;;;
;; reduce

(fact "use reduce to update a map data structure"
  (reduce (fn [new-map [key val]]

    (apply max [0 1 2])
    => 2))


;;;;;;;;;;;;;;;;
;; partial - takes a function an any number of arguements and returns a new function
;;   then when the new function is called it call the original function with the orignal
