Ah ok. I couldn't come up with anything, but I think Kent has a nice eval-free (and macro-free) solution.
My thanks to you, and everyone who chimed in, for helping me better understand the read-time/compile-time/run-time distinction. On Sep 11, 8:29 am, icemaze <icem...@gmail.com> wrote: > Hi Btsai, thank you for your offer for help. > > As I said before I *could* use literals but it wouldn't be convenient. > I have a big structure which contains information about "types" (they > are types of domain-specific objects). I would like to extract the > "methods" I need from this structure and define them > programmatically. > > Previous solutions to this problem (both by me and other helpful > posters) required to pass keywords as literals. While I could do that, > maintaining a separate list would be a hassle. > Right now I'm using: > > (doseq [t (an-expession-which-extracts-a-list-of-keywords)] > (eval `(defobjecttype ~t))) > > So the problem is solved for me, although I have to use eval. I'm not > sure exactly how dirty this trick is and especially *why* it is > considered a "smell". I read it on Paul Graham's "On Lisp" and he > vehemently opposes its use but he doesn't explain why or where it is > acceptable. Note that he also considered Common Lisp "let*" a smell, > which is standard practice in Clojure (and in fact there's no > equivalent of Common Lisp "let"). So maybe we are just making too much > a big deal of this "eval" thing. > > I feel however that this problem should be addressed by the macro > system somehow (although maybe that's not possible by design). > If someone could find a solution which doesn't involve eval it would > definitely be more elegant. -- 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