 (defn aclone
   "Returns a javascript array, cloned from the passed in array"
   [array-like]
-  (js* "(~{array-like}).slice()"))
+  (.slice array-like))
 
 (defn array
   "Creates a new javascript array.

  "Returns a random floating point number between 0 (inclusive) and
  n (default 1) (exclusive)."
  ([] (rand 1))
  ([n] (js* "Math.random() * ~{n}")))

(defn rand-int
  "Returns a random integer between 0 (inclusive) and n (exclusive)."
  [n] (js* "Math.floor(Math.random() * ~{n})"))

(defn rand-nth
  "Return a random element of the (sequential) collection. Will have

                   init)]
        (if (reduced? init)
          @init
          (let [init (if-not (nil? (.-right node))
                       (tree-map-kv-reduce (.-right node) f init)
                       init)]
            (if (reduced? init)
