Hey guys!
I just wanted to let you know that I also wrote an object system for gambit. It's supporting multiple inheritance and a bunch of other features. It's extensively described in my master's thesis, but the document is written in French. I'm sure that with the help of google translations, you proably be able to get most of the content. It also contains benchmarks comparing my system to meroon, oops and clos (if I remember correctly).
For a good usage example, you can refer to my Lode Runner implentation that is based on it.
The thesis, the object system and the lode runner sources can all be found in my github (user: sthilaid).
I'll send you the direct links when I get back home.
Cheers!
-- David
Le 2010-03-02 à 16:01, Christian Jaeger chrjae@gmail.com a écrit :
Thanks, Christian. I don't need multiple inheritance; I think it generally is bad design anyway. Meroon is really fast and the most sophisticated one I've seen, but I will check out Oops. I'm writing a scene graph and it'll be fun to run some benchmarks soon.
The point of Oops is not to be faster than Meroon in the single-inheritance case! So doing those benchmarks probably won't make much sense.
I've once written an object system in Perl (based on arrays instead of hashes, using integer constants as field names, for compile-time typo checking and "performance") and thought that single inheritance should suffice; only a couple years later I wanted to implement an object hierarchy with multiple implementations and realized that I needed multiple inheritance; I hacked around the object system and added the common classes ("interfaces") to the inheritance tree manually, and luckily Perl would still allow code in those common classes, but I was unable to add fields there. That project never became a success, and so it didn't matter so much, but I implemented a new object system layer for Perl later (there are so many of those in the meantime that it didn't really matter anymore whether I'd create another one), providing for multiple inheritance, and using the only implementation strategy there is for it on Perl, hashes; of course I would still use the old system for all existing classes, because the way objects were implemented (array access) would mean I'd have to change the syntax of all field accesses... Maybe what this taught me was that you can't foresee what you need and what not. (And that abstract syntax is a good thing.)
I'm not claiming that you'll need MI (*), but you better be prepared to adapt your code once you do.
Christian.
(*) there *may* be alternatives _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list