"Steven Schveighoffer" <schvei...@yahoo.com> wrote in message news:op.vfq0aydoeav...@localhost.localdomain... > On Mon, 12 Jul 2010 16:22:28 -0400, bearophile <bearophileh...@lycos.com> > wrote: > >> Steven Schveighoffer: >>> bearophile: >>> > String mixins are a hack, just a bit better than C preprocessor >>> (because >>> > they are scoped), they are not a replacement of clean macros. >>> >>> Interesting statement, can you back it up? :) What can you do with a >>> macro that you can't do with a mixin? >> >> In the meantime others have already given you some answers, I can add >> one example. The Brainfuck language allows you to do every kind of >> thing, I have seen even compilers written in it, but its usage is very >> unhandy, it's bug-prone, requires lot of code to do even simple things, >> and it's very hard to modify and debug programs written in it. What I >> meant is that string mixins in theory allow you to do many things, but >> in practice you can't use them for complex tasks, and you can't modify >> and fix the resulting code if you try to use them for more complex >> tasks. They are not a long-term solution for a language that seriously >> wants to improve over C and its preprocessor macros, they are a hack. > > Brainfuck is basically a toy example of a language. Nobody uses it for > serious work. Mixins are much better than a hack, the syntax of using > them is just not polished. They are easy to use/understand because a) > people understand the language and b) people understand string > manipulation. >
But when you're talking about the string being actual code, you're not always talking about typical string manipulation, sometimes you're talking about parsing which is only "string manipulation" superficially. > > I'll give you another example -- javascript and HTML editing. Most people > would prefer to just use the innerHTML component of an element than have > to use the DOM methods to create individual elements and add them as > children, etc. > For writing, yes, but there's also reading: How many people do you know who would rather find the elements they want by parsing innerHTML instead of just dealing with the readily-available tree? None, I would hope, but the latter is essentially what we have to do for many of the more advanced things that string mixins *technically* replace AST macros for.