I want to write a function or macro that allows me to output the value
of an expression without repeating it. For example, I want something
like (dump (+ 1 2)) to output "(+ 1 2) = 3".

This works.

(defn dump1 [string]
  (println string "=" (load-string string)))
(dump1 "(+ 1 2)")

Note how I had to put the expression passed to dump1 in quotes to make a string.

I'm wondering if there is a way to avoid that using a macro. The hard
part is printing the expression. The following doesn't work. It
outputs "3 = 3".

(defmacro dump2 [expr]
  `(let [value# ~expr]
     (pr ~expr)
     (println " =" value#)))
(dump2 (+ 1 2))

-- 
R. Mark Volkmann
Object Computing, Inc.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to