   ([x y & more]
     (reduce + (cljs.core/+ x y) more)))
 
-(defn -
+(defn ^number -
   "If no ys are supplied, returns the negation of x, else subtracts
   the ys from x and returns the result."
   ([x] (cljs.core/- x))
   ([x y] (cljs.core/- x y))
   ([x y & more] (reduce - (cljs.core/- x y) more)))
 
-(defn *
+(defn ^number *
   "Returns the product of nums. (*) returns 1."
   ([] 1)
   ([x] x)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Seq fns ;;;;;;;;;;;;;;;;

(defn compare
  "Comparator. Returns a negative number, zero, or a positive number
  when x is logically 'less than', 'equal to', or 'greater than'
  y. Uses IComparable if available and google.array.defaultCompare for objects

       (cljs.core/>= y (first more)))
     false)))

(defn ^number dec
  "Returns a number one less than num."
  [x] (- x 1))

(defn ^number max
  "Returns the greatest of the nums."
  ([x] x)
  ([x y] (cljs.core/max x y))
  ([x y & more]
   (reduce max (cljs.core/max x y) more)))

(defn ^number min
  "Returns the least of the nums."
  ([x] x)
  ([x y] (cljs.core/min x y))
  ([x y & more]
   (reduce min (cljs.core/min x y) more)))

(defn ^number byte [x] x)

(defn char
  "Coerce to char"
