Thanks all for responding.

Ram – Appreciate both versions, but I need to use it with regular
functions created with `defn`.

Rostislav – I need to do this in a regular function created using
`defn`; not sure how can I use named let in this case. Am I missing
something?

Steve – Your example is already compact, but maybe it can be made even
cheaper by specifying maxDepth of 1:
http://docs.oracle.com/javase/6/docs/api/java/lang/management/ThreadMXBean.html#getThreadInfo(long,
int)

Shantanu

On Mar 28, 10:18 pm, Ram Krishnan <kriyat...@gmail.com> wrote:
> On Wednesday, March 28, 2012 at 9:15 AM, Shantanu Kumar wrote:
>
> > On Mar 28, 8:57 pm, Ram Krishnan <kriyat...@gmail.com (http://gmail.com)> 
> > wrote:
> > > Did you just need the name of the function? something like this?
>
> > Sorry, I should explained using code what I am looking for:
>
> > (defmacro find-name []
> > ;; some magic here
> > ..)
>
> > (defn foo []
> > ..
> > (println (find-name)) ; should print "foo"
> > ..)
>
> > I am looking for a way to write the `find-name` macro. So, you can see
> > I want to use it with regular functions defined using `defn`.
>
> If you can't use a specialized `defn` you could try something like the 
> following, assuming that you need this for just a temporary while (say during 
> development):
>
> ---------------->8----8<----------------
>
> (def ^{:dynamic true} *myself* nil)
> (defn find-name [] *myself*)
>
> (defmacro trace [sym]
>   `(let [old# ~sym]
>      (def ~sym (fn [& args#]
>                  (binding [*myself* '~sym]
>                    (apply old# args#))))))
>
> (defn foo [a b] [(find-name) (+ a b)])
>
> (foo 1 2) => [nil 3]
>
> (trace foo)
>
> (foo 1 2) => [foo 3]
>
> ---------------->8----8<----------------
>
> It requires you explicitly `trace` the functions within which you want to 
> call `find-name`, otherwise the name will just be `nil`.
>
>
>
>
>
>
>
>
>
> > Shantanu
>
> > --
> > 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 
> > (mailto: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 
> > (mailto:clojure+unsubscr...@googlegroups.com)
> > For more options, visit this group at
> >http://groups.google.com/group/clojure?hl=en

-- 
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