summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-10-18 00:48:42 +0000
committerRich Hickey <richhickey@gmail.com>2007-10-18 00:48:42 +0000
commit0c09fc92fe24697fe0c0373c0a730a9e4bb05cf2 (patch)
tree2fd7a4d7cf39a4fbb2e07c4fb932ebbe1b1dfa1d /src
parent83a9de7db39c25429f00d265043212943d229fc0 (diff)
added dotimes, time macros
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/boot.clj b/src/boot.clj
index 8698b7b7..4cec9172 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -489,6 +489,12 @@
~@body)
(recur (rest list#)))))
+(defmacro dotimes [i n & body]
+ `(loop [~i 0 n# ~n]
+ (when (< ~i n#)
+ ~@body
+ (recur (inc ~i) n#))))
+
(defn import [& import-lists]
(when import-lists
(let [#^clojure.lang.Var imps *ns-imports*
@@ -573,6 +579,11 @@
(do
~@(map (fn [m] (list '. gx m))
members)))))
+(defmacro time [expr]
+ `(let [start# (. System (nanoTime))
+ ret# ~expr]
+ (prn (strcat "Elapsed time: " (/ (- (. System (nanoTime)) start#) 1000000.0)" msecs"))
+ ret#))
(def *exports*
'(clojure
@@ -597,10 +608,11 @@
map mapcat filter take take-while drop drop-while
zipmap
cycle split-at split-with repeat replicate iterate
- dolist
+ dolist dotimes
eval import unimport refer unrefer in-namespace unintern
into-array array
make-proxy new-proxy
prn print newline *out* *current-namespace* .->
+ time
))