(deftype SeqFly [s]
  clojure.lang.ISeq
    (first [this] (first (some-seq s)))
    (next  [this] (SeqFly. (last (some-seq s))))
    (more  [this] (next this))
  Object
    (toString [this] (str s)))
