   the same text, then highlight their background, and report them in a warning
   down the bottom.
   Almost any action (edit text, add new todo, remove a todo) requires a
-  complete reassesment of duplication errors and wanrings. Eg: that edit
+  complete reassesment of duplication errors and warnings. Eg: that edit
   update might have introduced a new duplicate or removed one. Same with a
   todo removal.
   And to perform this enrichment, a function has inspect all the todos,



(defn trim-v
  "Middleware which removes the first element of v which allows you to write
  more asthetically pleasing handlers. No leading underscore on the event-v!
  Your handlers will look like this:
      (defn my-handler

          (warn "re-frame: Looks like \"pure\" is in the middleware pipeline twice. Ignoring.")
          (warn "re-frame: \"pure\" middleware not given a Ratom.  Got: " app-db))
        handler)    ;; turn this into a noop handler
      (let [db      @app-db
            new-db  (handler db event-vec)]
        (if (nil? new-db)
          (warn "re-frame: your pure handler returned nil. It should return the new db state.")
          (if-not (identical? db new-db)
            (reset! app-db new-db)))))))


