Here is where I started... http://www.lisperati.com/clojure-spels/casting.html
I personally disagree about being so timid with macros, however, I do not code Clojure with a team of other people =P. The one thing you will find about Clojure is that it slaps a limit on the types of macros you can do. This limit does not necessarily stop you from creating amazing things with macros but it is there. So of the macros that you will find in these LISP SPEL books will not be easily recreated in the hampered(pampered?) Clojure language. Clojure was meant to be a more corporate friendly, pragmatic language; thus, no reader macros. On Friday, August 9, 2013 6:21:02 PM UTC-4, Jace Bennett wrote: > > Thanks everyone. Good stuff. > > I have Let over Lambda, but I didn't glean what I wanted from it (or > probably even what it wanted from me). I'll pick up On Lisp. I didn't > realize it was focused on macros. > > Also, I think Luca has given me a clue. I used code gen techniques long > before I started using reflection based techniques. Macros are more like > code gen, so I'll think back to those techniques, and search for analogues > and maybe even epiphanies. I think I had the ideas of dynamism and DRY > complected (sorry, had to). The dynamism will obviously require state. The > DRY shouldn't. But in C# I've usually gone dynamic to get dry. > > Out of curiousity, where do the defs go? Could one iterate over all the > vars in the runtime environment? Would I just get pointers to native code? > > > On Fri, Aug 9, 2013 at 1:04 PM, Andrew Stine > <illumin...@gmail.com<javascript:> > > wrote: > >> The difficulty with On Lisp when applied to Clojure is that the specific >> macros On Lisp demonstrates either depend on state, which Clojure avoids, >> or are already present in Clojure core. (if-let is a big one in my book.) >> Some of them also run into conflicts with Clojure implicit gensyming. I >> don't suggest it for the specific macros it demonstrates, but because it >> demonstrates very clearly what they are for, why and where you would use >> them, and how, in general, they are used. I also don't write macro much >> anymore in Clojure but that's mostly because Clojure has a few macros >> already which handle most of the things I would do with them in Common Lisp. >> >> >> On Friday, August 9, 2013 11:13:44 AM UTC-4, Lee wrote: >>> >>> >>> On Aug 9, 2013, at 11:01 AM, Andrew Stine wrote: >>> >>> > For a pretty decent cover of when and how to use macros, On Lisp[1] is >>> a pretty good book. It's written mainly for Common Lisp but most of it >>> translates to Clojure well enough. I find that for common code, writing >>> macros isn't so useful as most of the goods ones are already part of >>> clojure.core. But if you ever find yourself in the position where you'd >>> really like to have a control structure just for your program, or introduce >>> a compile-time code generator, or subtly add a new paradigm to the >>> language, a macro is your ticket. >>> > >>> > 1. http://code.google.com/p/**onlisp/<http://code.google.com/p/onlisp/> >>> >>> I think that On Lisp is completely awesome -- one of the best technical >>> books of any kind that I've ever read. >>> >>> However, my recollection is that the macro stuff, in particular, doesn't >>> translate so well to Clojure because the differences between Common Lisp >>> and Clojure macros are pretty fundamental. Or at least that has been my >>> impression.... and I mostly stopped writing macros when I switched from >>> Common Lisp to Clojure because I found the differences confusing. Your >>> experience may be different but I thought that a warning might be in order. >>> >>> -Lee >>> >>> >>> >>> -- >> -- >> 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<javascript:> >> 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 <javascript:> >> 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 <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- -- 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.