[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
string comparison operators (was: Re: Tail call elimination)
From: |
Paul Smith |
Subject: |
string comparison operators (was: Re: Tail call elimination) |
Date: |
Mon, 18 May 2020 16:44:30 -0400 |
On Mon, 2020-05-18 at 20:04 +0000, Tim Murphy wrote:
> Re comparing strings: we already have ifeq and what I have often
> wanted is to have a function equivalent so I can use it in
> expressions. As bad as ifeq may be from the point of view of locale
> this need be no better to be an improvement over the unpleasant hacks
> I've had to use to get the same effect with more complicated
> expressions.
The issue is that conditionals have a very different syntax than an
inline function:
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
You can see that here we are actually accepting and parsing quotes:
it's the only place in GNU make syntax where make cares about quotes.
How would this translate to an inline function? Do we need to invent
quote matching and parsing there as well? If we don't have some kind
of quoting it will be very hard to manage string comparisons where
strings contain whitespace and/or operators:
x = does x eq
y = y
z = $(expr $x ne $y)
will run expr with arguments "does x eq ne y" which is not going to be
parsed correctly.
The reason (I assume) GNU make accepts so many different delimiters is
that it doesn't contain a robust escape sequence implementation
(personally I think this was the wrong choice because it assumes you
know the contents of your variables sufficiently to pick a set of
delimiters that won't conflict--I would have preferred a single set of
delimiters and a 100% reliable escape character mechanism across the
entire grammar--at least outside of recipes--plus maybe a function that
will "enscapify" a string).
This kind of thing is why I'd prefer to separate out the different
proposals as some answers are much simpler than others.
- Re: Tail call elimination, (continued)
- Re: Tail call elimination, Pete Dietl, 2020/05/18
- Re: Tail call elimination, Paul Smith, 2020/05/18
- Re: Tail call elimination, Pete Dietl, 2020/05/18
- Re: Tail call elimination, Jouke Witteveen, 2020/05/18
- Re: Tail call elimination, Pete Dietl, 2020/05/18
- Re: Tail call elimination, Pete Dietl, 2020/05/18
- Re: Tail call elimination, Pete Dietl, 2020/05/18
- Re: Tail call elimination, Tim Murphy, 2020/05/18
- Re: Tail call elimination, Paul Smith, 2020/05/18
- Re: Tail call elimination, Tim Murphy, 2020/05/18
- string comparison operators (was: Re: Tail call elimination),
Paul Smith <=
- Re: string comparison operators (was: Re: Tail call elimination), Pete Dietl, 2020/05/18
- Re: string comparison operators (was: Re: Tail call elimination), Paul Smith, 2020/05/18
- Re: Tail call elimination, Daniel Herring, 2020/05/18
- Re: Tail call elimination, Paul Smith, 2020/05/19
- Re: Tail call elimination, Tim Murphy, 2020/05/19
- math expressions (was: Re: Tail call elimination), Paul Smith, 2020/05/19
- Re: Tail call elimination, Pete Dietl, 2020/05/20
- Re: Tail call elimination, Daniel Herring, 2020/05/20
- Re: Tail call elimination, Pete Dietl, 2020/05/20
- Re: Tail call elimination, Paul Smith, 2020/05/20