Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: surprise with echo
20.12.2014, 08:39, "Ray Andrews" <rayandrews@xxxxxxxxxxx>:
> On 12/19/2014 09:08 PM, Lawrence Velázquez wrote:
>> You still don't understand what's going on. The expansion only results
>> in a null result *if the array itself is empty*. Null *elements* do
>> not produce the same behavior.
>
> Yes, I understand it, I just spoke poorly.
>> Agreed. That's why enabling RC_EXPAND_PARAM by default should never
>> happen.
>
> I'd say that if it worked the way Kurtis showed that it's 'supposed' to work
> then that would be the best of all possible worlds. But it's just my 1/2
> cent, I don't value my own opinion on this beyond that.
>>> OTOH Bart just showed how the surprise can be avoided so ....
>> It's only a surprise if you enable the option without understanding
>
> what it does first.
>
> Too true.
>> clang -I${include_dirs} test.c What would be the point of this
>
> expanding to "clang -I test.c"? It seems entirely reasonable to drop
> that word entirely and expand to "clang test.c", which is what actually
> happens. vq
> Well, whatever more experienced people think. I have no skin in the
> issue, but my intuitive sense of it is than a 'nothing' should just be
> nothing, but it shouldn't go killing things that are not nothing. It's
> probably not debatable, and it doesn't matter anyway. Especially if
> there are other examples of that sort of thing, then it might not be
> considered a surprise. But if that's the only place where it happens,
> then I'd say it's questionable. That expansion is sure cool, but I don't
> think it should kill entire strings: echo "what's wrong with this
> string? $@", especially since it leaves it alone if we use " $* ".
> Dunno. All I can say is that rc itself seems to agree with me.
When thinking about RC_EXPAND_PARAM I think of it as applying `map` to an array that prepends/appends strings. As such `-I${include_dirs}` with empty $include_dirs does not kill an a string. It just transforms an empty array to an empty array and that’s all. You don’t think that e.g. `map(lambda v: '-I' + v, lst)` (Python) should produce `['-I']` for the empty list, do you?
I though use $^ and not RC_EXPAND_PARAM in which case it is clear that an array is treated specially. It also does not work inside `""` which makes it even more clear. If RC_EXPAND_PARAM was on always I would find it logical, but unexpected and not convenient.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author