Proposal: Multidimensional opSlice solution
Don
nospam at nospam.com
Mon Mar 8 11:46:26 PST 2010
Lars T. Kyllingstad wrote:
> Don wrote:
>> Norbert Nemec wrote:
>>> Don wrote:
>>>> Norbert Nemec wrote:
>>>>> Hi there,
>>>>>
>>>>> in implementing multi-dimensional arrays, the current way of
>>>>> overloading the slicing operator does not scale up.
>>>>>
>>>>> Currently, there is opIndex working for an arbitrary number of
>>>>> indices, but opSlice works only for one dimension. Ultimately, it
>>>>> should be possible to allow slicing for more than one dimension,
>>>>> and mixing it with indexing for e.g.:
>>>>> A[4,7..8,7,2..5]
>>>>> So far, no clean solution for overloading this has been suggested.
>>>>
>>>> A solution was suggested while you were away.
>>>> You don't need a new opRange operator, a simple tuple struct like:
>>>> struct Slice(T) { T from; T to; }
>>>> in std.object is enough.
>>>> Note that:
>>>> A[4, Slice(7,8), 7, Slice(2,5)]
>>>>
>>>> will work with the existing compiler. So it's just a tiny syntax
>>>> sugar issue.
>>>
>>> I know this solution. It is exactly the "syntax sugar" issue that I
>>> see as the problem here:
>>>
>>> The compiler would need to be aware of the data type Slice. It would
>>> therefore have to be something like a "builtin" type. If I am not
>>> mistaken, the language definition so far never makes use of "builtin"
>>> struct types.
>>
>> You are mistaken <g>.
>> object, TypeInfo, AssociativeArray, ...
>> Complex will be added to that list, too.
>
> It will? For complex literals, then?
>
> -Lars
Hmmm. Maybe not. Complex literals will probably just disappear. We don't
need them any more.
More information about the Digitalmars-d
mailing list