 (ns stch.zipper
-  "Zipper for sequential data. Keeps a
+  "Zipper for sequential data. Maintains a
   history of the traversed positions."
   (:require [clojure.core :as core])
   (:use

  [& args :- [Any]]
  (->zip args))

(defn' left :- Zipper
  "Move the zipper to the left."
  [z :- Zipper]
  (if (core/empty? (:left z))

               index
               (conj (:traversed z) index)))))

(def left "Alias for prev." prev)
(def right "Alias for next." next)

(defn' start? :- Boolean
  "Are we at the start of the zipper?"
  [z :- Zipper]
  (core/empty? (:left z)))

(def not-start?
  "Are we not at the start of the zipper?"
  (comp not start?))

(defn' end? :- Boolean
  "Are we at the end of the zipper?"
  [z :- Zipper]
  (core/empty? (:right z)))

(def not-end?
  "Are we not at the end of the zipper?"
  (comp not end?))

(defn' empty? :- Boolean
  "Is the zipper empty?"
