On Sat, 22 May 2010 07:56:31 -0400, Michel Fortin <michel.for...@michelf.com> wrote:

On 2010-05-21 22:55:16 -0400, Walter Bright <newshou...@digitalmars.com> said:

Walter Bright wrote:
If we can get anywhere close to that level of success with ranges and containers, we should all be well pleased.
Mike Taylor has a phrase for that I think is well-coined: "impedance matching", defined as the work necessary to get one library module to work with another
library module.

This makes me think about something.

In principle, I like the idea of containers being reference type. It works well when passing a container to functions. But at the same time, I despite it. By-reference containers forces you to have extra indirections even when you don't need them, and you have to worry about null. Sometime a value-type would be better, when creating more complex data structures for instance:

        class Channel {
                private {
                        Array!Message inbound;
                        Array!Message outbound;
                }

                ...
        }

What's the point of having extra indirection here?

Scope class members should solve this. It's been thrown around forever -- essentially, you should be able to define that a class member's storage is contained within the owner object.

a value-type node-based containers just don't work well -- it's too easy to escape references, and too easy to accidentally duplicate the entire node set when passing to functions. It works fine for arrays because the array has a very simple structure -- data and length. And the length and data are somewhat orthogonal.

-Steve

Reply via email to