autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: changequote


From: Akim Demaille
Subject: Re: changequote
Date: 22 Dec 2000 16:27:15 +0100
User-agent: Gnus/5.0807 (Gnus v5.8.7) XEmacs/21.1 (Channel Islands)

>>>>> "Mirar" == Mirar  <address@hidden> writes:

Mirar> Yes, and M4's approach doesn't work well if you don't set up
Mirar> your macro library yourself. What I call black box is when
Mirar> someone else sets up and maintains something that you only get
Mirar> an API to, something you only can interface and not assume
Mirar> anything about. Since m4's quoting system doesn't allow that -
Mirar> you need to demand other things.

Yes it does!  *That's* the problem.  Because 2.13 has no rigorous
approach to quotation, yes, I agree with everything you said above.
But that's a default in the implementation.

With CVS Autoconf there is no such surprise: each argument is
evaluated *once* exactly.  With 2.13, you never new how many times.

But WRT to changequote, it's very much like selecting the syntax of
your language.  But once chosen, it should not change, it's like
deciding in middle of a C program that finally you prefer ` ' over {
}.

Just imagine changequote is a option, --changequote.  We chose [ and ]
for Autoconf, period.  If you change the syntax, then of course
program using the `old' syntax no longer work.

Mirar> In my opinion, m4 only works for files like .Xdefault and other
Mirar> simple non-presuming text expansion.

Well, then let's say that up to now we've had quite a piece of luck
having ./configure look like a shell script :)

Mirar> No, since both CPP macros and C functions work well in a black
Mirar> box environment - you don't need to know how the function are
Mirar> represented to add your own quoting.

Again, I agree this is what 2.13 have people believe.  That's a *bug*
in Autoconf 2.13.

Mirar> It's interesting that you call it broken, though. <= 2.13 it
Mirar> was assumed that you had a true m4 environment; most macros
Mirar> didn't quote, so you could use changequote, and you could make
Mirar> use of m4 define.

This has *nothing* to do with a `true m4 environment'.  It is still
there.  It is just that up to now you had the *luck* (I *mean* what I
wrote) that it worked.  But that's an accident.  How can you expect a
program to work if you change the syntax of the language while running
it???

Mirar> Is that - define - going to be dropped too, btw?

I think you're really missing my point.  I apologize for having been
harsh like this, maybe it shadowed what I meant.  But I really believe
most criticisms against Autoconf are based on (i) wrong understanding
of quotation (not as a technique per se, but the fact that you *need*
it), (ii), IMHO, wrong assumption that in some other language it would
have been easier, better, more homogeneous etc.

IMHO there is much to criticize about Autoconf, but on this point it's
easy to criticize more than actually needed.  Please, read the CVS
Autoconf documentation, you'll understand much better what I say.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]