Targeting C
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Oct 30 09:42:00 PDT 2009
rmcguire wrote:
> Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:
>
>> grauzone wrote:
>>> Andrei Alexandrescu wrote:
>>>> Pelle Månsson wrote:
>>>>> Andrei Alexandrescu wrote:
>>>>>> Yigal Chripun wrote:
>>>>>>> On 23/10/2009 13:02, bearophile wrote:
>>>>>>>> Chris Nicholson-Sauls:
>>>>>>>>
>>>>>>>>> I prefer this (Scala):
>>>>>>>>> list = list ++ (0 to 10)
>>>>>>>> That's quite less readable. Scala sometimes has some unreadable
>>>>>>>> syntax. Python has taught me how much useful a readable syntax is :-)
>>>>>>>> Designing languages requires to find a balance between several
>>>>>>>> different and opposed needs.
>>>>>>>>
>>>>>>>> Bye,
>>>>>>>> bearophile
>>>>>>> how about this hypothetical syntax:
>>>>>>>
>>>>>>> list ~= [0..10];
>>>>>> I'm not sure what the type of "list" is supposed to be, but this
>>>>>> works today for arrays:
>>>>>>
>>>>>> list ~= array(iota(0, 10));
>>>>>>
>>>>>>
>>>>>> Andrei
>>>>> What does iota mean?
>>>> http://www.digitalmars.com/d/2.0/phobos/std_range.html#iota
>>> This link jumps straight to:
>>>
>>> Take!(Sequence!("a.field[0] + n *
>>> a.field[1]",Tuple!(CommonType!(B,E),S))) iota(B, E, S)(B begin, E end, S
>>> step);
>>>
>>> Wow, please tell me this is a ddoc malfunction. I mean, that thing left
>>> to iota is supposed to be a type?
>>>
>>> (OK, it _is_ a malfunction, but that thing is still supposed to be... a
>>> type?)
>> Well what was I supposed to do? It was either define another type Iota,
>> or reuse existing types. I chose to reuse.
>>
>> Andrei
>>
>
>
> Hi Andrei,
>
> Could you tell me why:
> Take!(Sequence!("a.field[0] + n * a.field[1]",Tuple!(CommonType!(B,E),S)))
>
> Is a type and not a value?
>
> -Rory
Take!(
Sequence!(
"a.field[0] + n * a.field[1]",
Tuple!(
CommonType!(B,E),
S
)
)
)
If you look here:
http://www.dsource.org/projects/phobos/browser/trunk/phobos/std/algorithm.d
and in related files, you'll see that Take is a type with one parameter.
Then Sequence is a type with two parameters. Then Tuple is a type with
any number of parameters, and so is CommonType.
So in spite of it looking complicated, it's just a usual instantiation
of a few parameterized types. (What may confuse a C++ programmer is the
presence of the string - it's just a template argument.)
Andrei
More information about the Digitalmars-d
mailing list