 ;    save the entire stack into `local` and clear it
 ;    raise an Exception if it's undefined
 
-; + `remember [args fn :as local]
+; + `remember-calc [args fn :as local]
 ;    save the result of applying `fn` to the named `args` under key `local`
 
-; - `remember [stackname :as local]`
+; + `remember-top [stackname :as local]`
 ;    store top item from `stackname` under key `local`
 ;    raise an Exception if it's empty or undefined
 
-; - `remember [stackname :at where :as local]`
+; + `remember-nth [stackname :at where :as local]`
 ;    store item in `stackname` at position `where` under key `local`
 ;    raise an Exception if it's empty or undefined
 



(fact "remember-top stores the top item of a named stack"
  (let [integer-added (-> [six-ints {}]
                          (consume :integer :as :int1)
                          (consume :integer :as :int2)
                          (remember-top :integer :as :third))]
  (second integer-added) => {:int1 6, :int2 5, :third 4}))


(fact "remember-top has no effect if :as is not specified"
  (let [integer-added (-> [six-ints {}]
                        (consume :integer :as :int1)
                        (consume :integer :as :int2)
                        (remember-top :integer))]
  (second integer-added) => {:int1 6, :int2 5}))



; (def-pushinstruction

  (second integer-added) => {:int1 6, :int2 5}))


(defn remember-top
  [[interpreter locals] stackname & {:keys [as]}]
  (if (nil? as)
