   "Returns true if x is not nil, false otherwise."
   [x] (not (nil? x)))
 
-(defn ^boolean object? [x]
+(defn ^boolean object?
+  "Returns true if x's constructor is Object"
+  [x]
   (if-not (nil? x)
     (identical? (.-constructor x) js/Object)
     false))
 
-(defn ^boolean string? [x]
+(defn ^boolean string?
+  "Returns true if x is a JavaScript string."
+  [x]
   (goog/isString x))
 
 (set! *unchecked-if* true)

          (recur ret (first ks) (next ks))
          ret)))))

(defn ^boolean fn? [f]
  (or ^boolean (goog/isFunction f) (satisfies? Fn f)))

(deftype MetaFn [afn meta]

  [x]
  (coercive-= x nil))

(defn ^boolean array?
  "Returns true if x is a JavaScript array."
  [x]
  (cljs.core/array? x))

(defn ^boolean number?
  "Returns true if x is a JavaScript number."
  [n]
  (cljs.core/number? n))

(defn ^boolean not
