Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Shalaka Patil
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 (printl

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Herwig Hochleitner
I'd definitely go with 1.), because the `exec` in 2.) is basically `eval` and thus should be used most sparingly. You can also expand on 1.) by using a macro, that stores the source and other debugging information in metadata and thus get all the benefits of 2.) and then some. -- You received thi

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Mohit Thatte
Hi Shalaka, +1 to what Herwig said. Changing wait-until to a macro seems like the simplest way to tackle this. It gives you access to pred at compile time, does not force the caller to add meta-data to pred, and you can construct the error message as you like. The challenge with your approach 1

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Herwig Hochleitner
2015-05-28 19:22 GMT+02:00 Mohit Thatte : > Changing wait-until to a macro seems like the simplest way to tackle this. > It gives you access to pred at compile time, does not force the caller to > add meta-data to pred, and you can construct the error message as you like. > I was actually thinkin

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Mohit Thatte
"but it won't give useful information if you don't construct the op inline." The interesting question here is what constitutes useful information! The trade-off is breaking an existing public API. If Shalaka's primary goal is prettier errors in test failures, I'd settle for the fn body itself as

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-28 Thread Herwig Hochleitner
2015-05-28 19:42 GMT+02:00 Mohit Thatte : > > The interesting question here is what constitutes useful information! > (let [pred #(exists? ".foo")] (wait-until pred)) ;; <- the fact that it's called 'pred is not interesting in most cases > The trade-off is breaking an existing public API. > H

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-29 Thread Mohit Thatte
I see what you mean, this is nice [?] On Thu, May 28, 2015 at 11:25 PM, Herwig Hochleitner wrote: > 2015-05-28 19:42 GMT+02:00 Mohit Thatte : >> >> The interesting question here is what constitutes useful information! >> > > (let [pred #(exists? ".foo")] > (wait-until pred)) ;; <- the fact tha

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-29 Thread Shalaka Patil
Hey, Thanks Herwig & Mohit. So, I have one more solution. Here is the original wait-until function- (defn wait-until ([pred] (wait/wait-until *driver* (fn [_] pred))) ([pred timeout] (wait/ wait-until *driver* (fn [_] pred) timeout)) ([pred timeout interval] (wait/ wait-until *driver* (fn [

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-29 Thread Baishampayan Ghose
Shalaka, This is a really interesting conversation :-) However, I'd insist that you ditch eval or any sort of complicated affair and adopt the metadata approach as I had suggested that day :-P ~BG On Fri, May 29, 2015 at 4:20 PM, Shalaka Patil wrote: > Hey, Thanks Herwig & Mohit. > > So, I hav

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-29 Thread Shalaka Patil
Hey BG, Yes, having metadata is really a straight forward way but this is kind of extra work in every wait-until call which I was trying to avoid. Going with metadata option will not just cause extra work for wait-until in future code but even I need to add it at all the places in wherever i

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-29 Thread Baishampayan Ghose
May be wrap it up in a `wait-until-with-meta` macro as Herwig suggested? Then you can search and replace the invocations. ~BG On Fri, May 29, 2015 at 9:30 PM, Shalaka Patil wrote: > Hey BG, >Yes, having metadata is really a straight forward way but this is kind > of extra work in every wait-

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-31 Thread Shalaka Patil
Okay. Thanks BG :) On Saturday, May 30, 2015 at 5:13:00 AM UTC+5:30, Baishampayan Ghose wrote: > > May be wrap it up in a `wait-until-with-meta` macro as Herwig suggested? > Then you can search and replace the invocations. ~BG > > On Fri, May 29, 2015 at 9:30 PM, Shalaka Patil > wrote: > >> Hey

Re: Get anonymous function's(which is parameter to function) body in called function

2015-05-31 Thread Leon Grapenthin
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 UT