Ok, I think I get it now. Thanks for the explanation! To clarify my error, I did not put your suggestion into the ns declaration. I called it on a separate line of code. I now just have all of my require statements at the top of my clj files with proper aliasing and it works fine.
Thanks again, Patrick On Wednesday, October 30, 2013 1:28:00 PM UTC-4, Jim foo.bar wrote: > > On 30/10/13 16:56, P Martin wrote: > > Thanks - I'm still a little confused on the different between use and > require. > > > 'use' is sort of deprecated after it was noticed that people were abusing > it. It's not exactly deprecated because in some cases like incremental > development at the repl it is really usefyl to have. That said, 'require' > can do everything 'use' can via " :refer :all". so what I'm saying is the > the following two are equivalent : > > (require '[clojure.tools.macro :refer :all]) > (use '[clojure.tools.macro]) > > Now, in perhaps 8/10 cases you should not do any of that. The next guy > that will look at your code will not have the slightest clue what external > fns you're using. He literally has to manually inspect the entirity of that > external namespace and figure out which ones you've actually used. A more > informative way would be the following 2: > > (require '[clojure.tools.macro :as mac]) ;;if you're unsure of what you > 'll end up using just alias it > (require '[clojure.tools.macro :refer [name-with-attributes mexpand-all > ]]) ;;if you know upfront what you need, specify it > > using the second you don't need an alias, but you've explicitly said "here > are the only vars i've used". Massive difference don't you agree? > > In the case of var-clash due to same name, just make sure you use aliases. > That is if you want both vars with the same name. If you don't just > overwrite the one or :exclude it via: > > (:refer-clojure :exclude [==]) ;;core.logic does this all the time > > When I try your suggestion for the matrix library, (require > '(clojure.core.matrix :as mat)), I get: > > IllegalArgumentException Don't know how to create ISeq from: > clojure.lang.Keyword clojure.lang.RT.seqFrom (RT.java:505) > > > I'm really sorry about that...I'm pretty sure that works in a > ns-declaration, I'm puzzled as to why it doesn't work here. In any case, a > quoted vector (as shown above) does work just fine. It also looks nicer :) > > hope that helps, > > Jim > -- -- 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.