Skip to content

Instantly share code, notes, and snippets.

@nodename
Created February 26, 2012 19:49

Revisions

  1. nodename created this gist Feb 26, 2012.
    39 changes: 39 additions & 0 deletions map-while-spec.clj
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    (ns ex5.map-while-spec
    (:use ex5.map-while)
    (:use clojure.test))

    (deftest test-map-while-1
    (let [f #(* % %)
    s (range 100)
    pred #(< % 50)
    result (map-while-1 f s pred)]
    (is (= (count result) 50))
    (is (= (first result) 0))
    (is (= (last result) (f 49)))))

    (deftest test-map-while-2
    (let [f #(* % %)
    s (range 100)
    pred #(< % 50)
    result (map-while-2 f s pred)]
    (is (= (count result) 50))
    (is (= (first result) 0))
    (is (= (last result) (f 49)))))

    (deftest test-map-while-1-again
    (let [f #(* % %)
    s '(20 40 60 35 10)
    pred #(< % 50)
    result (map-while-1 f s pred)]
    (is (= (count result) 2))
    (is (= (first result) (f 20)))
    (is (= (last result) (f 40)))))

    (deftest test-map-while-2-again
    (let [f #(* % %)
    s '(20 40 60 35 10)
    pred #(< % 50)
    result (map-while-2 f s pred)]
    (is (= (count result) 2))
    (is (= (first result) (f 20)))
    (is (= (last result) (f 40)))))
    7 changes: 7 additions & 0 deletions map-while.clj
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    (ns ex5.map-while)

    (defn map-while-1 [f s pred]
    (for [x s :while (pred x)] (f x)))

    (defn map-while-2 [f s pred]
    (map f (take-while pred s)))