Cameron Laird <[EMAIL PROTECTED]> wrote: ... > On this one isolated matter, though, I'm confused, Alex: I sure > think *I* have been writing DSLs as specializations of Python, > and NOT as "a language in its own right". Have I been fooling > myself, or are you making the point that Lisp-based DSLs live in > a larger syntactic universe than Python's, or ...?
With Lisp (or Scheme, for that matter), a DSL "lives" in exactly the same world as the base language, while being able to add or tweak whatever syntax it needs; with Python (or C++ or Java, for that matter), a DSL is either a completely separate beast (parsed, compiled, perhaps interpreted in the "host" language), or else it uses exactly the same syntax as used in the host language. To rapidly build, experiment with, and tweak, DSL's, a language with macros is thus advantaged. As to how crucial that is for _production_ (as opposed to _research_) purposes, well, obviously I prefer having no macros (or else I'd use some form of Lisp, or perhaps Dylan -- at least for my own private purposes, such as my long-standing personal research into the fundamentals of contract bridge -- while in fact I prefer to use Python for those purposes just as for others). But that doesn't make me blind to the advantages of macros for DSL-building purposes (if I was totally sold on both Python AND macros, I think I might build a macro preprocessor on top of Python -- the current ASL-based compiler probably makes that task much more feasible than it used to be -- but, macros would be somewhat complicated as in Dylan, not extremely easy as in Scheme [[or, I guess, Common Lisp, though I have no real experience with those -- on the surface they look murkier than Scheme's, but that may be just an issue of habit on my part]]). Alex -- http://mail.python.org/mailman/listinfo/python-list