   (let [h (dec i), m (dec n), cur (cursor cm i)]
     (cond
       (neg? n)
-      (println "infinite loop")
+      (guard)
 
       (bof? cm cur)
       :do-nothing

                         (cursor cm (- i (- ch start))))]
          (fn [] ;; for trampoline
            (skip-trampoline-helper-left cm next-cur sp result (dec n))))))
    (println "infinite loop")))

(defn skip
  "returns the cursor that satisfies sp or nil if either eof reached

  (let [m (dec n), j (inc i), cur (cursor cm i), right-cur (cursor cm j)]
    (cond
      (neg? n)
      (guard)

      (eof? cm right-cur)
      :do-nothing
