Why: error("multiple ! arguments are not allowed");

Daniel N via Digitalmars-d digitalmars-d at puremagic.com
Sun May 21 11:09:45 PDT 2017


On Sunday, 21 May 2017 at 14:11:00 UTC, Stanislav Blinov wrote:
> On Sunday, 21 May 2017 at 13:42:50 UTC, Vladimir Panteleev 
> wrote:
>> On Sunday, 21 May 2017 at 13:08:18 UTC, Adam D. Ruppe wrote:
>>> foo!(x)!y
>>
>> I think it's the same as foo!x!y. As for the reason - I think 
>> because the order is possibly ambiguous or something? You 
>> could interpret it as either (foo!x)!y or foo!(x!y).
>
> I did encounter that a few times too, and my humble opinion is 
> that there should not be any ambiguity, it should just be 
> left-to-right, i.e.:
>
> foo!x!y is the same as (foo!x)!y, and
>
> foo!x!y!z!w would be (((foo!x)!y)!z)!w
>
> This is no different from
>
> foo!x.bar, which is (foo!x).bar and not foo!(x.bar)
>
> Allowing this will only help reduce boilerplate. If we do need 
> different order, we could always explicitly instantiate 
> beforehand.

I ran into this aswell.
Agreed, just an arbitrary restriction.




More information about the Digitalmars-d mailing list