Yes, good point. I tried apply, but the result from that is always
*nil*(where there should be a value). You're right that it should work
(we
wouldn't use eval in that scenario), but it doesn't.

I tried putting params in a seq a list and a vector, but no dice. I'm still
playing around with it.


Tim Washington
Interruptsoftware.com <http://interruptsoftware.com>


On Fri, Jan 3, 2014 at 8:19 PM, Cedric Greevey <cgree...@gmail.com> wrote:

> Yeah, he probably could. But maybe he has a good reason for avoiding it
> that we're not aware of. Though I'm not sure what that could be.
>
>
> On Fri, Jan 3, 2014 at 8:11 PM, Jason Wolfe <ja...@w01fe.com> wrote:
>
>>
>>
>>
>> On Fri, Jan 3, 2014 at 4:43 PM, Timothy Washington <twash...@gmail.com>wrote:
>>
>>> The crux of the problem is that the size of *params* can be variable.
>>> Only at runtime, does the code match the loaded *afn*, with the passed
>>> in *params*. So I basically just need to break out the *~@params* into
>>> individuated input arguments. The only other way I can think to do that,
>>> without using eval, would be to curry afn, for each input param.
>>>
>>
>> Can you just use `apply`?
>>
>>
>>>
>>>
>>> Tim Washington
>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>
>>>
>>> On Fri, Jan 3, 2014 at 7:20 PM, Jason Wolfe <ja...@w01fe.com> wrote:
>>>
>>>> Glad to help.
>>>>
>>>> I admittedly haven't taken the time to understand what's going on in
>>>> your code, but whenever I see `eval` I feel compelled to ask: are you sure
>>>> you need it?
>>>>
>>>> With that out of the way, here's a trick I've used to work around
>>>> related errors:
>>>>
>>>> https://groups.google.com/d/msg/clojure/BZwinR2zNgU/8HGOgzOxzosJ
>>>>
>>>> Best,
>>>> Jason
>>>>
>>>> On Friday, January 3, 2014 3:18:22 PM UTC-8, frye wrote:
>>>>
>>>>> Hey Jason,
>>>>>
>>>>> You were exactly right (which is pretty impressive, being that you've
>>>>> never seen my code). In my (s/defn ..) form, there was an error that was
>>>>> failing silently.
>>>>>
>>>>> (s/defn [one two]
>>>>>    ...
>>>>>    *#_(def params (atom '({}) ))*
>>>>>    (def params '({}))
>>>>>    (try (eval `(~afn ~@params))  (catch Exception e (println
>>>>> "Exception: " (.getMessage e)))))
>>>>>
>>>>>
>>>>> So the abouve code works. But if I instead use the commented version,
>>>>> I'll get an exception. It seems there's a problem passing in a form
>>>>> containing an atom to be dynamically eval'd. The error is mentioned on
>>>>> these posts (here <http://clojure-log.n01se.net/date/2009-03-02.html>and
>>>>> here<http://www.raynes.me/logs/irc.freenode.net/clojure/2012-09-17.txt#>).
>>>>> Is there a way to pass in a form containing an atom to be dynamically
>>>>> eval'd? It's pretty important to my architecture, that all functions treat
>>>>> that system-atom the same. Any insights are welcome.
>>>>>
>>>>> *"java.lang.RuntimeException: Can't embed object in code, maybe
>>>>> print-dup not defined: clojure.lang.Atom@1c99db7 (NO_SOURCE_FILE:0)"*
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> Tim Washington
>>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>>
>>>>>
>>>>> On Fri, Jan 3, 2014 at 2:39 PM, Jason Wolfe <ja...@w01fe.com> wrote:
>>>>>
>>>>>> Thanks for the report.
>>>>>>
>>>>>> Schema fns inside of go blocks seem to work fine for me.  It seems
>>>>>> likely that you're seeing an exception inside the go block, which is
>>>>>> swallowed by default:
>>>>>>
>>>>>> user> (clojure.core.async/go (println "A"))
>>>>>> #<ManyToManyChannel clojure.core.async.impl.
>>>>>> channels.ManyToManyChannel@46ae10a6>
>>>>>> A
>>>>>>
>>>>>> user> (clojure.core.async/go (throw (RuntimeException.)) (println
>>>>>> "A"))
>>>>>> #<ManyToManyChannel clojure.core.async.impl.
>>>>>> channels.ManyToManyChannel@427c78c1>
>>>>>>
>>>>>> Would you mind wrapping the body of your go block in a try/catch and
>>>>>> printing the exception stack trace, or posting a gist that demonstrates 
>>>>>> the
>>>>>> issue so I can look into it further?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>> On Friday, January 3, 2014 10:21:16 AM UTC-8, frye wrote:
>>>>>>
>>>>>>> Forwarding...
>>>>>>>
>>>>>>> ---------- Forwarded message ----------
>>>>>>> From: Timothy Washington <twas...@gmail.com>
>>>>>>> Date: Fri, Jan 3, 2014 at 1:17 PM
>>>>>>> Subject: Re: Core.async, Rules for passing clojure vals to go block
>>>>>>> To: Shaun Gilchrist <shaun...@gmail.com>
>>>>>>>
>>>>>>>
>>>>>>> I'm using Prismatic's Schema in my code base. Now, it looks like
>>>>>>> defining some functions with 
>>>>>>> s/defn<https://github.com/Prismatic/schema/blob/master/src/clj/schema/macros.clj#L453>,
>>>>>>> yields some wonky behaviour. Particularly, not running, when being 
>>>>>>> invoked
>>>>>>> in a go block. It just fails silently, which is why it was so hard to 
>>>>>>> track
>>>>>>> down. Don't yet know why this is happening. But an fyi for the devs and
>>>>>>> users of this package. Still love schema, I just need to figure out 
>>>>>>> where
>>>>>>> the call chain breaks down.
>>>>>>>
>>>>>>>
>>>>>>> Hth
>>>>>>>
>>>>>>> Tim Washington
>>>>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jan 3, 2014 at 9:58 AM, Timothy Washington <
>>>>>>> twas...@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hey Shaun,
>>>>>>>>
>>>>>>>> Thanks for looking into this. Your example does indeed work. I'll
>>>>>>>> have to teardown my own code and see where the invocations are 
>>>>>>>> failing. At
>>>>>>>> least I know it's not core.async.
>>>>>>>>
>>>>>>>>
>>>>>>>> Cheers
>>>>>>>>
>>>>>>>> Tim Washington
>>>>>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>>>>>
>>>>>>>>  --
>>> --
>>> 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
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Clojure" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/clojure/j8QWNnFNIVg/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> clojure+unsubscr...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
>> --
>> 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
>> ---
>> 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 clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>  --
> --
> 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
> ---
> 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 clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
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
--- 
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to