|I wrote up this post initially as a reply to rocketnia's comment on my last post, but it ended up growing to be something of it's own topic, so I am putting it at the top-level.|
Context: Several times now I've run into problems writing code that writes code in lisp, and I always end up thinking "this would be so much easier in tcl". I guess this is an open ended discussion starter about the complexity of writing macros and what the benefits of keeping types in the language are if you're going to be able to treat code as data and vice versa anyway.
The trouble I'm having creating this macro brings up some questions on my part for more experienced lispers. Have you ever programmed in tcl? I get the feeling tcl is regarded as something of a toy scripting language by most programmers, if they've heard of it, but I would think it has appeal for lispers. Code and data are the same thing, even more so than in lisp. In tcl it's easier to generate code than it is in lisp. Since there are no types, you just need to get the right code in the right place in time for the interpreter to come along and evaluate it.
I've been trying for some time to understand why so many smart people regard lisp as the end all be all of dynamic languages. Macros, they say, can't be found anywhere else having the same power they do in lisp. But that's not true, tcl has a macro system which is written in pure tcl. Can you write a macro system in lisp if it's not built in?
I'd love to hear your guys' opinions on why you write lisp and not something else.