Thank all of you for the information. I finally picked up an approach
of using "&form" and "*file*", and here's my code snippet of the
function:
==============================================================
(defmacro debug
  "Print debug info."
  [& variables]
  (let [datetime "2011-12-17 01:59:37"
        naked-msg (str "Debug: " datetime " in " *file* "@" (:line
(meta &form)))]
      (if (empty? variables)
        (println naked-msg)
        `(let [kvs# (zipmap (map #(str % " =>") '~variables)
                            (vector ~@variables))]
           (println (str ~naked-msg ":") kvs#)))))
==============================================================
Basically it works for me now.....But yes, in my code I don't know how
to avoid blowing up problem if there's any loooooong seq variable
there being debugged - if you have any ideas about fixing this issue,
please let me know.

And about the tricky thing by using exception to capture file name &
line number - even though it's also the first idea came into my mind
but - I didn't tried that way because I think this might not be a good
solution. Comparing with using &form, which solution would you prefer
and why? (I prefer to use &form because I think this is more efficient
(but I don't have a proof.....))

On 12月15日, 下午1时48分, jaime <xiejianm...@gmail.com> wrote:
> Hello there,
>
> I want to write a function named "debug" which will print out "date-
> time msg + current source-line + etc. info", but I don't know how to
> get the current source and line number of the running point (just like
> what REPL does when encounter any exceptions) ...
>
> Got any ideas?
>
> Thanks!

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
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