Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-09-15 (21:25)
From: Corey O'Connor <coreyoconnor@g...>
Subject: Re: [Caml-list] Heritage
For something that provides the functionality of runtime inheritance
check out the Decorator pattern.

Essentially the deccorator pattern is like this:
* All decorators conform to the same interface of the object they are
* Methods follow this pattern: (In C++)
    type CMyDecorator::SomeMethod(args)
        // Do some additional stuff
        return mObjectBeingDecorated.SomeMethod(args);

The end result is you can add functionality to methods of an object at runtime.

Hope that helps,

-Corey O'Connor

On 9/15/05, David Baelde <> wrote:
> Hi list,
> We're getting crazy with some design problem. We need to design a
> buffer object and be able to extend it with some features
> (lexing,color highlighting... yes we're working on an editor). Here's
> the problem.
> I'd like to have a class (or function) for every extension. For
> example be able to write
> new parsed (new lexed (new basic)). I.e. I would need the class:
> class lexed buf =
> object inherit buf method get_token = ... end
> It doesn't work cause inheritance is only from classes, not objects.
> But I want buf to be of any class (any super-class of buffer actually)
> but I don't want to coerce buf to type buffer, cause I want to keep
> extra methods if any were added.
> I'd like to know if there's any simple example of why
> object-inheritance is forbidden, and if any of you have an idea for
> that problem..
> Thanks.
> --
> David
> _______________________________________________
> Caml-list mailing list. Subscription management:
> Archives:
> Beginner's list:
> Bug reports:

-Corey O'Connor