Data structures in stdlib [Was: MEP for release 1.3.2]

Filip Konvička filip.konvicka.removethisantispamtoken at logis.cz
Thu Feb 16 15:51:26 CET 2006


> I understood that in Mozart a class instance is represented as a data 
> structure which contains all its methods as data. You do this even 
> explicitly with your methods bound to features. This increases the 
> memory footprint of an instance.
> 
> For your proposal I don't see much benefits doing it the OOP way: do you 
> expect most users of your data structure would create some subclasses 
> which inherit from RBTree?

I agree. There is no benefit. This way is just comfortable for me. I 
hide the internals as private methods and expose the ordinary methods as 
features, so that I can use syntax similar to what I use when working 
with the Dictionary module, without creating a module.

> Alternatively, a data structure which separates the actual data and the 
> procedures on this data would need less memory for an instance of the 
> data. E.g., this is the case for most data structures in Mozart such as 
> List, Record etc.  An abstract data representation could hide its 
> internals in a first-class procedure.  Everything would then be 
> integrated in a functor (as you propose yourself).
 >
> This might be a better approach for something proposed to be integrated 
> in the standard library.

This code was not meant for the stdlib! I just wanted to share the code 
that I use. Another (surely better) way of sharing would be creating a 
functor and uploading it to mogul. I just did not have the time to do this.

> BTW: Why not first putting something in Mogul from where it can be use 
> almost as if it is part of the standard library (you only need to 
> install it yourself).

Maybe I was too modest to put something in Mogul! ;-)

>> But I use this also regularly when I want to have a procedure (i.e. a 
>> "static method") inside a class, either because it uses some private 
>> identifiers (names) of the class, or just to logically group the code.
> 
> Coming from an OOP background myself, I do much stuff in Oz the OOP way. 
> Nevertheless, this is not necessarily the better way ;-)

As I said, this is just for syntactic purposes.

Cheers,
Filip




More information about the mozart-users mailing list