Re: how do I reference a var that is in my core namespace?
That worked. I find it a little surprising that this is the correct way to do this, but it worked, so I am happy. Thank you. On Thursday, February 21, 2013 1:43:18 PM UTC-5, Sean Corfield wrote: > > I tend to have this at the top of most of my namespaces: > > (def ^:private my-ns *ns*) > > This evaluates *ns* at load/init time when it is bound to the > namespace being loaded and then initializes my-ns with that value. > Then I use my-ns throughout that namespace. > > *ns* is dynamically bound to whatever namespace is currently executing > which is why it changes "unexpectedly" when you're trying to do > something obvious with it. > > On Thu, Feb 21, 2013 at 10:30 AM, larry google groups > > wrote: > > I wanted to have some functions run when an app starts, and I wanted > this to > > be configurable, because I plan to use the same architecture for several > > apps. So I thought I could have the function names as strings inside of > maps > > inside of a set (that I sort), in a config file. And I thought I could > use > > ns-resolve *ns* symbol to turn the strings into references to the vars > where > > the function definitions are stored. But somehow this is not working. I > have > > this right now, in mpdv.core, which is the core namespace is an app I > > created with lein: > > > > > > (defn process-startup-hooks [] > > "2013-02-21- remember, each row in hooks is a map: {:order-of-events > 1, > > :event-name 'connect-to-database'}" > > (connect-to-database) > > (let [hooks (sort-by :order-of-events > > (:events-called-when-the-app-starts-hooks @um/interactions))] > > (doseq [x hooks] > > (let [event-as-symbol (symbol (:event-name x)) > > event (ns-resolve *ns* event-as-symbol)] > > (println " what kind of var is this? ") > > (println *ns*) > > (println (type event-as-symbol)) > > (println event-as-symbol) > > (if-not (nil? event) > > (event)) > > > > > > "event" is always nil. One of the events listed in um/interactions is > > "connect-to-database" so, as a test, I hardcoded it here, to be sure it > > could run here, and it runs fine (first line after the comment). So the > var > > for the function is known. But this: > > > > (ns-resolve *ns* event-as-symbol) > > > > returns nil, even when event-as-symbol is "connect-to-database". > > > > When I println *ns* to the terminal output, I see the namespace is: > > > > # > > > > Which surprises me somewhat. > > > > How do I get ns-resolve to look in mpdv.core for the var that I want it > to > > find? > > > > -- > > -- > > You received this message because you are subscribed to the Google > > Groups "Clojure" group. > > To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com . > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > > > -- > Sean A Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > World Singles, LLC. -- http://worldsingles.com/ > > "Perfection is the enemy of the good." > -- Gustave Flaubert, French realist novelist (1821-1880) > -- -- 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.
Re: how do I reference a var that is in my core namespace?
I tend to have this at the top of most of my namespaces: (def ^:private my-ns *ns*) This evaluates *ns* at load/init time when it is bound to the namespace being loaded and then initializes my-ns with that value. Then I use my-ns throughout that namespace. *ns* is dynamically bound to whatever namespace is currently executing which is why it changes "unexpectedly" when you're trying to do something obvious with it. On Thu, Feb 21, 2013 at 10:30 AM, larry google groups wrote: > I wanted to have some functions run when an app starts, and I wanted this to > be configurable, because I plan to use the same architecture for several > apps. So I thought I could have the function names as strings inside of maps > inside of a set (that I sort), in a config file. And I thought I could use > ns-resolve *ns* symbol to turn the strings into references to the vars where > the function definitions are stored. But somehow this is not working. I have > this right now, in mpdv.core, which is the core namespace is an app I > created with lein: > > > (defn process-startup-hooks [] > "2013-02-21- remember, each row in hooks is a map: {:order-of-events 1, > :event-name 'connect-to-database'}" > (connect-to-database) > (let [hooks (sort-by :order-of-events > (:events-called-when-the-app-starts-hooks @um/interactions))] > (doseq [x hooks] > (let [event-as-symbol (symbol (:event-name x)) > event (ns-resolve *ns* event-as-symbol)] > (println " what kind of var is this? ") > (println *ns*) > (println (type event-as-symbol)) > (println event-as-symbol) > (if-not (nil? event) > (event)) > > > "event" is always nil. One of the events listed in um/interactions is > "connect-to-database" so, as a test, I hardcoded it here, to be sure it > could run here, and it runs fine (first line after the comment). So the var > for the function is known. But this: > > (ns-resolve *ns* event-as-symbol) > > returns nil, even when event-as-symbol is "connect-to-database". > > When I println *ns* to the terminal output, I see the namespace is: > > # > > Which surprises me somewhat. > > How do I get ns-resolve to look in mpdv.core for the var that I want it to > find? > > -- > -- > 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. > > -- Sean A Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ World Singles, LLC. -- http://worldsingles.com/ "Perfection is the enemy of the good." -- Gustave Flaubert, French realist novelist (1821-1880) -- -- 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.
how do I reference a var that is in my core namespace?
I wanted to have some functions run when an app starts, and I wanted this to be configurable, because I plan to use the same architecture for several apps. So I thought I could have the function names as strings inside of maps inside of a set (that I sort), in a config file. And I thought I could use ns-resolve *ns* symbol to turn the strings into references to the vars where the function definitions are stored. But somehow this is not working. I have this right now, in mpdv.core, which is the core namespace is an app I created with lein: (defn process-startup-hooks [] "2013-02-21- remember, each row in hooks is a map: {:order-of-events 1, :event-name 'connect-to-database'}" (connect-to-database) (let [hooks (sort-by :order-of-events (:events-called-when-the-app-starts-hooks @um/interactions))] (doseq [x hooks] (let [event-as-symbol (symbol (:event-name x)) event (ns-resolve *ns* event-as-symbol)] (println " what kind of var is this? ") (println *ns*) (println (type event-as-symbol)) (println event-as-symbol) (if-not (nil? event) (event)) "event" is always nil. One of the events listed in um/interactions is "connect-to-database" so, as a test, I hardcoded it here, to be sure it could run here, and it runs fine (first line after the comment). So the var for the function is known. But this: (ns-resolve *ns* event-as-symbol) returns nil, even when event-as-symbol is "connect-to-database". When I println *ns* to the terminal output, I see the namespace is: # Which surprises me somewhat. How do I get ns-resolve to look in mpdv.core for the var that I want it to find? -- -- 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.