   ISeq
   (-first [rng] start)
   (-rest [rng]
-    (if (-seq rng)
+    (if (coercive-not= (-seq rng) nil)
       (Range. meta (+ start step) end step nil)
-      (list)))
+      ()))
 
   ICollection
   (-conj [rng o] (cons o rng))


  ISeqable
  (-seq [rng]
    (let [comp (if (pos? step) < >)]
      (when (comp start end)
        rng)))

  IReduce

(defn last
  "Return the last item in coll, in linear time"
  [s]
  (let [sn (next s)]
    (if (coercive-not= sn nil)
      (recur sn)
      (first s))))

(extend-type default
  IEquiv
