I wonder why this can't become a language feature? Couldn't Clojure attach 
the :source metadata directly to function objects (in addition to vars)? Is 
there a JIRA ticket for it? I'd instant-vote for it because I know it would 
make my debugging faster.

On Thursday, May 28, 2015 at 1:03:52 PM UTC+2, Shalaka Patil wrote:
>
> I have one function wait-until whose definition is like-
> (defn wait-until
>    [pred]
>    (wait-until* pred))
> where, pred is a function & wai-until* is some internal working.
>
> Now, I want to modify it like-
> (defn wait-until
>    [pred]
>    (try 
>     (wait-until* pred)
>     (catch Exception e
>       (println "Exception happened for fn " pred))))
>
> Now, for ex, input is (wait-until #(exists? ".foo")) and if wait-until* 
> throws exception
> it will print something like- #<taxi$eval40409$fn__40410 
> clj_webdriver.taxi$eval40409$fn__40410@7b7b202f>(compiled name for that 
> anonymous function)
> instead of that, I want actual function body which is #(exists? ".foo").
>
> But, I didn't get way where I can get source of anonymous function.
>
> Instead of that I found two ways for better user message:
> 1. Add meta to anonymous fn and print that meta in error message, so user 
> will get exact idea of where wait-until has failed.
>    (defn wait-until
>    [pred]
>    (try 
>     (wait-until* pred)
>     (catch Exception e
>        (when (meta pred)
>           (println "Exception happened for fn with meta: " (meta pred))))))
>
> and input will be like- (wait-until ^{:checks "existence of foo"} 
> #(exists? ".foo")) 
> and if it throws exception,
>  output will be like- Exception happened for fn with meta: {:checks 
> "existence of foo"}
>
> 2. Pass pred fun in quoted form, so that wait-until fn can execute + get 
> its body as it is.
>    (defn wait-until
>    [pred]
>    (try 
>     (wait-until* (exec pred))
>     (catch Exception e
>       (println "Exception happened for fn " pred))))
>
> So, which way is better to go with. Or is there any other way to do?
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to