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