 
 
 (defn basic-interpreter
-  "creates a new Interpreter record
-  With no arguments, it has an empty :program, the :stacks include
+  "With no arguments, it has an empty :program, the :stacks include
   core types and are empty, no :instructions are registered, and the
   counter is 0.
 



(defn register-instruction
  "Takes an Interpreter and an Instruction, and attempts to add the
  Instruction to the :instructions map of the Interpreter, keyed by
  its :token."
  [interpreter instruction]
  (let [token (:token instruction)
        registry (:instructions interpreter)]



(defn register-types
  "Takes an Interpreter record, and a list of PushType records. Calls `register-type` on each of the types in turn."
  [interpreter types]
  (reduce #(register-type %1 %2) interpreter types))


(defn register-modules
  "Takes an Interpreter record, and a list of modules. Calls `register-module` on each of those in turn."
  [interpreter modules]
  (reduce #(register-module %1 %2) interpreter modules))


(defn register-input
  "Takes an Interpreter record, a keyword and any item, and adds the item as a value stored under the keyword in the :inputs hashmap."
  ([interpreter value]
    (let [next-index (inc (count (:inputs interpreter)))
          next-input (keyword (str "input!" next-index))]
