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.