Hi,
maybe a different approach could be to use a richer datatype than a function,
which carries both: the command and the undo command.
(deftype Command [action undo])
Then you could do something like:
(defn do-patch!
[command args]
(dosync
(let [patch {:command command :args (vec args)}]
(apply (.action command) args)
(alter patches- conj patch)
patch)))
(defn undo-patch!
[]
(dosync
((.undo (:command patch)))
(alter patches- pop)))
Then you could provide specially crafted Commands and there would not be the
need to stub anything. Also Commands wouldn't have to be global objects.
Sincerely
Meikel
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en