[
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: | Tom Hirschowitz <Tom.Hirschowitz@e...> |
| Subject: | [Caml-list] sum types with objects |
Hi all,
when trying to implement lists with objects and classes, I run into
the following issue.
The idea is to define a class type list, parameterized over the type
'a of elements, and containing the methods is_nil, hd, tl, map. Then,
I planned to define two classes nil and cons for building objects of
type list.
The problem arises during the typing of list:
# class type ['a] list = object
method is_nil : bool
method hd : 'a
method tl : 'a list
method map : ('a -> 'b) -> 'b list
end
;;
class type ['a] list =
object
method hd : 'a
method is_nil : bool
method map : ('a -> 'a) -> 'a list
method tl : 'a list
end
The method map has type ('a -> 'a) -> 'a list, which is not what I
want. Trying to explicitely quantify 'b is also wrong, because 'b
escapes its scope.
Does someone know how to make this work?
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners