foo!(bar) ==> foo{bar} ==> foo[bar] (just Brackets)

Bruno Medeiros brunodomedeiros+spam at com.gmail
Wed Oct 15 07:11:02 PDT 2008


Don wrote:
> Bruno Medeiros wrote:
>> Jarrett Billingsley wrote:
>>> On Tue, Oct 14, 2008 at 6:43 PM, Bruno Medeiros
>>> <brunodomedeiros+spam at com.gmail> wrote:
>>>> Don wrote:
>>>>> Denis Koroskin wrote:
>>>>>> On Wed, 08 Oct 2008 18:22:21 +0400, superdan <super at dan.org> wrote:
>>>>>>
>>>>>>> Walter Bright Wrote:
>>>>>>>
>>>>>>>> Dee Girl wrote:
>>>>>>>>> I did not follow this group recent. School started. Sorry! I 
>>>>>>>>> just see
>>>>>>>>> now and please add my vote if possible. I start with D recent 
>>>>>>>>> and I
>>>>>>>>> remember beginning. foo!(bar) was not pleasant. Like forced
>>>>>>>>> convention with a bad char. And friends I show code never like 
>>>>>>>>> it. It
>>>>>>>>> is first thing they say why they do not like D. For me foo{bar}
>>>>>>>>> better idea. Thank you, Dee Girl
>>>>>>>> What do your friends think of { } ?
>>>>>>> School started. Every one so busy now. But I think does not 
>>>>>>> matter any
>>>>>>> more ^_^
>>>>>>>
>>>>>>> I want to make little idea. Sorry if idea mentioned before (I did 
>>>>>>> not
>>>>>>> read every thread). I think we can look square brackets []. Let 
>>>>>>> me explain
>>>>>>> why.
>>>>>>>
>>>>>>> Paren () is over used in C and in D. Any expression can be in (). 
>>>>>>> And
>>>>>>> adding () is possible in many cases. But it is not same with []. 
>>>>>>> For example
>>>>>>> a:(b) is ambiguous but a:[b] is not. So there are many signs 
>>>>>>> possible after
>>>>>>> symbol and before [. They are:
>>>>>>>
>>>>>>> ~ ! @ # $ % ^ & * - + = | \ / , < . > ? :
>>>>> Not all of them work. Here's a few examples:
>>>>>
>>>>>    enum { d= 3, e = 7 }
>>>>>    int [] a=[1,2];
>>>>>    bool c;
>>>>>    auto k=[e]; // kills =
>>>>>    a ~= c?[d]:[e]; // kills ?
>>>>>    int [] f = c?k:[e]; // kills :
>>>>>    if (f>[e]) {}   // kills <
>>>>>    if (f<[e]) {}   // kills >
>>>>>    auto g = (k,[d]); // kills comma
>>>>>    auto h = k~[d]; // kills ~
>>>>>
>>>>> Array ops will kill + - * / & | % ^
>>>>> Suddenly the list looks pretty short.
>>>>> !@#$\.
>>>>
>>>> Hum, what about brackets without any prefix character at all?
>>>>
>>>>  Vector[int, 2] foo;
>>>>  List[Vector[int, 2]] bar;
>>>>  int[3] a = [1, 2, 3]; // array literal here
>>>>  int[int] map;
>>>>  alias DenseMatrix[num] PulType;
>>>>  alias SparseRowsMatrix[num, HashSparseVector] PuuType;
>>>>  alias BiMap[uint, Tuple[uint, uint], BiMapOptions.lhDense] DicType;
>>>>  int var = a[2]; // array indexing here
>>>>
>>>> Hum... doesn't look bad visually. In fact it seems to fit quite nice 
>>>> with
>>>> how associative arrays, and even normal arrays, are declared. Hum, 
>>>> yes, I'm
>>>> personally liking this a lot.
>>>>
>>>> But does it have any ambiguities? Hum, can't think of any off-hand. 
>>>> If an
>>>> identifier appears before a bracket list, it could either be a template
>>>> instantiation, or an array indexation. But the syntax of both is the 
>>>> same,
>>>> so it doesn't need to be distinguished in the parser.
> 
> Arrays allow ..
> But, it would be nice if templates did too.
> 
> There _must_ be something badly wrong with this proposal, but I can't 
> see what it is <g>. I agree that it looks nice.

It does feel like it's too nice to be true... :P

-- 
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D



More information about the Digitalmars-d mailing list