"in" everywhere

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Oct 7 11:38:50 PDT 2010


On 10/7/10 12:11 CDT, Michel Fortin wrote:
> On 2010-10-07 11:47:21 -0400, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> said:
>
>> On 10/7/10 10:39 CDT, Daniel Gibson wrote:
>>> Andrei Alexandrescu schrieb:
>>>> On 10/7/10 9:59 CDT, Daniel Gibson wrote:
>>>>> Andrei Alexandrescu schrieb:
>>>>>> On 10/7/10 6:54 CDT, atommixz wrote:
>>>>>>> It would be nice if it were possible to use the "in" expression
>>>>>>> wherever
>>>>>>> possible. Now it is only implemented for associative. arrays.
>>>>>>> (Weird).
>>>>>>> Examples of how this could be used:
>>>>>>> - Find string in string
>>>>>>> - Search for a character in a string
>>>>>>> - Search for an item in the array, array of characters, array of
>>>>>>> strings,
>>>>>>> tuples, enum, structure
>>>>>>> - what else?
>>>>>>>
>>>>>>> In Python done something like this.
>>>>>>>
>>>>>>> Here it would be useful to me
>>>>>>> http://code.google.com/p/atommixz/source/browse/analyze-x86/analyze-x86.py
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> http://code.google.com/p/atommixz/source/browse/analyze-x86/analyzex86.d
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> I'm a bit leary of adopting this feature (it has been discussed). To
>>>>>> me "in" implies a fast operation and substring searching isn't quite
>>>>>> it.
>>>>>>
>>>>>> One thing that could be done is to allow "in" with literal arrays to
>>>>>> their right:
>>>>>>
>>>>>> if (x in ["abcde", "asd"]) { ... }
>>>>>>
>>>>>> The size of the operand is constant, known, and visible.
>>>>>>
>>>>>>
>>>>>> Andrei
>>>>>
>>>>> That feels inconsistent.. to be able to use it with "literal arrays to
>>>>> their right" (and what about fixed size arrays?) but not with actual
>>>>> arrays and dynamic arrays seems weird.
>>>>
>>>> It's not. It's all about constant size in the size of the input vs.
>>>> arbitrary size. Makes perfect sense to me.
>>>>
>>>
>>> So what about static arrays?
>>
>> Same deal - same as literal arrays: they can be searched. The expected
>> run time is known during compilation and independent of the input size.
>
> What about a static array of 200000 elements? At which point does it
> become linear?

At no point. "Linear" means "linear in the input size". I don't think 
such arguments are valid.

Andrei



More information about the Digitalmars-d mailing list