   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))

(defn last
  "Return the last item in coll, in linear time"
  [s]
  (if (next s)
    (recur (next s))
    (first s)))

(extend-type default
  IEquiv


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

  IReduce
