Browse thread
[Caml-list] subtyping, polymorphism, higher order types.....
[
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: | Daniel Weil <daniel.weil@a...> |
| Subject: | Re: [Caml-list] subtyping, polymorphism, higher order types..... |
I've spent these last week some time reading stuff on type classes and Hashkell and I was going to raise the same question : Is it possible to implement Type Classes (in the Haskell way) over Ocaml, at least over CamlLight ? Type classes (which are not object classes) solve in a very elegant way the problem of overloading (especially for arythmetic operators). I'm not sure to have understood precisely what G'Caml does but I don't think G'Caml solve this problem. Shaddin Doghmi wrote: > In my experiences with ocaml, one of the major frustrations i constantly > run into is the lack of subtyping. Polymorphic variants partially fix > that problem, by allowing one to define types as immediate unions (i.e. > without constructors) of other types, hence allowing a value to belong > to both the subtype and the supertype, not to mention multiple unrelated > types. > > However, there is still the issue of defining stuff such as "equality > types", "comparables", and such, allowing overloading of functions on > those. For example, when writing a large system with many datatypes, i > tend to find myself commenting each type definition with stuff like > "(*equality type*)", to indicate to myself whether or not im allowed to > use the default = operator on that type(for example, a set type would > not get that annotation). Haskell solves that problem through the use > of type classes. > > Another problem i run into is the inability to define parametric higher > order polymorphic types (is this the correct terminology?).. for > example. lets say i want to define the following type: > > type 'a identifier = I of 'a *int | S of 'a*int > > but, what if i want to restrict 'a to a narrower class of types (as > opposed to ad hoc types)... i would wish to say something like: > > type 'identifiable identifier = I of 'a*int | S of 'a*int > > where 'identifiable is a type class of some sort. I am not sure if > Haskell solves this problem using type classes(seems like it could), > Someone experienced in Haskell would probably know. > > I wonder if there are any plans to implement such a system in ocaml? if > so, what approach would be taken? > > just a few thoughts..... > > > > ------------------- > 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 > > ------------------- > 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 > > ------------------- > 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 > -- ********************************************************************* * Daniel Weil * * ATHYS * * NOVESPACE Bâtiment B - 100 allée St Exupéry - 38330 Montbonnot * * Tel 33 (0)4 56 38 04 12 Fax 33 (0)4 56 38 04 01 * * daniel.weil@athys.fr * ********************************************************************* ------------------- 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