Browse thread
oo type question
- Michael Wohlwend
[
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: | 2008-03-06 (12:55) |
From: | Michael Wohlwend <micha-1@f...> |
Subject: | oo type question |
I try to do the following: I have some objects (all with an id method): let o1 = object method id = 1 method hi = "hi" end let o2 = object method id = 2 method ho = "ho" end and now: class store = object val mutable ids = [] method add o = ids <- o#id :: ids end this doesn't work, since the hidden type variable in the argument to add (I think). But why can't the compiler just set o to be of type < obj:int; ..> ?. So I try: class ['a] store = object val mutable ids = [] method add (o: 'a) = ids <- o#id :: ids end;; ...but... let s = new store ;; give the type: val s : < id : '_a; _.. > store = <obj> so this doesn't work: s#add o1; s#add o2 his expression has type < hi : string; id : int > but is here used with type < ha : string; id : int > The second object type has no method ho If I define a function, say: let f o = o#id;; I get : val f : < id : 'a; .. > -> 'a = <fun> so this works: f o1; f o2 why does this not work with methods? cheers Michael