   ([sep coll]
    (drop 1 (interleave (repeat sep) coll))))
 
-#_(defmacro definline
-  "Experimental - like defmacro, except defines a named function whose
-  body is the expansion, calls to which may be expanded inline as if
-  it were a macro. Cannot be used with variadic (&) args."
-  {:added "1.0"}
-  [name & decl]
-  (let [[pre-args [args expr]] (split-with (comp not vector?) decl)]
-    `(do
-       (defn ~name ~@pre-args ~args ~(apply (eval (list `fn args expr)) args))
-       (alter-meta! (var ~name) assoc :inline '(fn ~name ~args ~expr))
-       (var ~name))))
-
 (defn empty
   "Returns an empty collection of the same category as coll, or nil"
   {:added "1.0"}
   [coll]
   (when (satisfies? clojerl.IColl coll)
     (clj_core/empty.e coll)))
-
-#_ ((defmacro amap
-      "Maps an expression across an array a, using an index named idx, and
-  return value named ret, initialized to a clone of a, then setting
-  each element of ret to the evaluation of expr, returning the new
-  array ret."
-      {:added "1.0"}
-      [a idx ret expr]
-      `(let [a# ~a
-             ~ret (aclone a#)]
-         (loop  [~idx 0]
-           (if (< ~idx  (alength a#))
-             (do
-               (aset ~ret ~idx ~expr)
-               (recur (inc ~idx)))
-             ~ret))))
-
-    (defmacro areduce
-      "Reduces an expression across an array a, using an index named idx,
-  and return value named ret, initialized to init, setting ret to the
-  evaluation of expr at each step, returning ret."
-      {:added "1.0"}
-      [a idx ret init expr]
-      `(let [a# ~a l# (alength a#)]
-         (loop  [~idx 0 ~ret ~init]
-           (if (< ~idx l#)
-             (recur (inc-int ~idx) ~expr)
-             ~ret))))
-
-    (defn float-array
-      "Creates an array of floats"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers float_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.0"}
-      ([size-or-seq] (. clojure.lang.Numbers float_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers float_array size init-val-or-seq)))
-
-    (defn boolean-array
-      "Creates an array of booleans"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers boolean_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.1"}
-      ([size-or-seq] (. clojure.lang.Numbers boolean_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers boolean_array size init-val-or-seq)))
-
-    (defn byte-array
-      "Creates an array of bytes"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers byte_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.1"}
-      ([size-or-seq] (. clojure.lang.Numbers byte_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers byte_array size init-val-or-seq)))
-
-    (defn char-array
-      "Creates an array of chars"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers char_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.1"}
-      ([size-or-seq] (. clojure.lang.Numbers char_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers char_array size init-val-or-seq)))
-
-    (defn short-array
-      "Creates an array of shorts"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers short_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.1"}
-      ([size-or-seq] (. clojure.lang.Numbers short_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers short_array size init-val-or-seq)))
-
-    (defn double-array
-      "Creates an array of doubles"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers double_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.0"}
-      ([size-or-seq] (. clojure.lang.Numbers double_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers double_array size init-val-or-seq)))
-
-    (defn object-array
-      "Creates an array of objects"
-      {:inline '(fn [arg] `(. clojure.lang.RT object_array ~arg))
-       :inline-arities #{1}
-       :added "1.2"}
-      ([size-or-seq] (. clojure.lang.RT object_array size-or-seq)))
-
-    (defn int-array
-      "Creates an array of ints"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers int_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.0"}
-      ([size-or-seq] (. clojure.lang.Numbers int_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers int_array size init-val-or-seq)))
-
-    (defn long-array
-      "Creates an array of longs"
-      {:inline '(fn [& args] `(. clojure.lang.Numbers long_array ~@args))
-       :inline-arities #{1 2}
-       :added "1.0"}
-      ([size-or-seq] (. clojure.lang.Numbers long_array size-or-seq))
-      ([size init-val-or-seq] (. clojure.lang.Numbers long_array size init-val-or-seq)))
-
-    (definline booleans
-      "Casts to boolean[]"
-      {:added "1.1"}
-      [xs] `(. clojure.lang.Numbers booleans ~xs))
-
-    (definline bytes
-      "Casts to bytes[]"
-      {:added "1.1"}
-      [xs] `(. clojure.lang.Numbers bytes ~xs))
-
-    (definline chars
-      "Casts to chars[]"
-      {:added "1.1"}
-      [xs] `(. clojure.lang.Numbers chars ~xs))
-
-    (definline shorts
-      "Casts to shorts[]"
-      {:added "1.1"}
-      [xs] `(. clojure.lang.Numbers shorts ~xs))
-
-    (definline floats
-      "Casts to float[]"
-      {:added "1.0"}
-      [xs] `(. clojure.lang.Numbers floats ~xs))
-
-    (definline ints
-      "Casts to int[]"
-      {:added "1.0"}
-      [xs] `(. clojure.lang.Numbers ints ~xs))
-
-    (definline doubles
-      "Casts to double[]"
-      {:added "1.0"}
-      [xs] `(. clojure.lang.Numbers doubles ~xs))
-
-    (definline longs
-      "Casts to long[]"
-      {:added "1.0"}
-      [xs] `(. clojure.lang.Numbers longs ~xs)))
-
-#_(import '(java.util.concurrent BlockingQueue LinkedBlockingQueue))
 
 (defn seque
   "Creates a queued seq on another (presumably lazy) seq s. The queued

  [& body]
  (list 'new 'clojerl.LazySeq (list* '^{:once true} fn* [] body)))

#_((defn ^clojure.lang.ChunkBuffer chunk-buffer ^clojure.lang.ChunkBuffer [capacity]
     (throw "unimplemented chunked seq")
     #_(clojure.lang.ChunkBuffer. capacity))


  "Returns true if x is an instance of Class"
  {:added "1.0"}
  [x]
  (throw "unsupported class"))

(defn alter-var-root
