Browse thread
Object typing
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Matthew O'Connor <angagon@e...> |
| Subject: | Re: [Caml-list] Object typing |
Christophe TROESTLER wrote: > On Sat, 09 Jul 2005, "Matthew O'Connor" <angagon@earthlink.net> wrote: > >>Here is a version of what I would like to be able to do, but can't or >>don't know how. I would like to use polymorphic variants to enable >>easier extensibility of the hierarchy. > > > To understand what does not work, try > > class entity = > object > method is_a v = (v = `Entity) > end > > You get an error message of which the important part is "The method > is_a has type ([> `Entity ] as 'a) -> bool where 'a is unbound". It > says that the method [is_a] is of type 'a -> bool with a constraint on > 'a. Since you do not want a method of type (forall 'a) 'a -> bool > (written "'a. ([> ] as 'a) -> bool" in your error message), you > parametrize the class by that type 'a (the rest is in interactive > mode): Ahh, thank you for the explanation. > # class ['a] entity = > object > method is_a (v:'a) = (v = `Entity) > end;; > class ['a] entity : > object constraint 'a = [> `Entity ] method is_a : 'a -> bool end Yes, this is exactly what I was looking for. Again, thanks to all who answered. Matt