    (js/Error.
      (.join (array "No protocol method " proto
                    " defined for type " ty ": " obj) ""))))
+
+(defn type->str [ty]
+  (if-let [s (.-cljs$lang$ctorStr ty)]
+    s
+    (str ty)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; arrays ;;;;;;;;;;;;;;;;
 

         (-nth coll n)
         
         :else
         (linear-traversal-nth coll (.floor js/Math n)))))
  ([coll n not-found]
     (if-not (nil? coll)
       (cond

         (-nth coll n)

         :else
         (if (satisfies? ISeq coll)
           (linear-traversal-nth coll (.floor js/Math n) not-found)
           (throw
             (js/Error.
               (str "nth not supported on this type "
                 (type->str (type coll)))))))
       not-found)))

(defn get
