Using a def inside a defn really shouldn't be done. Perhaps move the params
to a let outside of the s/defn? Or change the def to a let?

Timothy Baldridge


On Fri, Jan 3, 2014 at 4:18 PM, Timothy Washington <twash...@gmail.com>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 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.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

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