   {:added "1.0"
    :static true}
   ([f]
-   (throw "unimplemented trampoline, not needed"))
+     (let [ret (f)]
+       (if (fn? ret)
+         (recur ret)
+         ret)))
   ([f & args]
-   (throw "unimplemented trampoline, not needed")))
+     (trampoline #(apply f args))))
 
 (defn intern
   "Finds or creates a var named by the symbol name in the namespace


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; var documentation ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------

(load "core_print")

(defmacro simple-benchmark
  "Runs expr iterations times in the context of a let expression with

  "Returns true if x implements Fn, i.e. is an object created via fn."
  {:added "1.0"
   :static true}
  [x] (erlang/is_function.e x))


(defn associative?
 "Returns true if coll implements Associative"
