public
Created

  • Download Gist
gist.clj
Clojure
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
user=> (defmacro split-while [pred top bottom] `(loop [] ~top (when ~pred ~bottom (recur))))
#'user/split-while
 
;; Example usage
 
user=> (def counter (atom 0))#'user/counter
user=> (split-while (< @counter 10) (println @counter) (swap! counter inc))0
1
2
3
4
5
6
7
8
9
10
nil
user=> (split-while false (println @counter) (println "this wont run"))
10
nil

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.