 	    (alter cache# assoc ~args rslt#))
 	   rslt#)))))
 
-(defmacro recur-sequence [& things]
+(defmacro recur-sequence
+  "Define a recursive sequence in a math-like notation."
+  [& things]
   (let [initials (vec (butlast things))
 	recur-fn (last things)]
     `(let [initials# (lazy-seq ~initials)]

       (if (not (empty? data#))
	 (print-summary (summarize data#))))))

(defmacro memo-fn [name args & body]
  `(let [cache# (ref {})]
     (fn ~name ~args
       (if (contains? @cache# ~args)

		      (cons new-val# (step# (inc n#) (concat (rest old-vals#) (list new-val#)))))))
		~(count initials) initials#)))))

(defmacro with-recur-seqs
  "Allow simple definitions of recursive sequences."
  [seq-definitions & body]
  (let [seq-names (take-nth 2 seq-definitions)
	seq-defs  (take-nth 2 (rest seq-definitions))]
    `(let [~@(reduce concat (map (fn [seq-name] `(~seq-name (ref []))) seq-names))]
