Skip to content

Instantly share code, notes, and snippets.

@Raynes
Created November 28, 2010 09:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Raynes/718750 to your computer and use it in GitHub Desktop.
Save Raynes/718750 to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment