uhm, I have a couple of questions I don't understand on your
explanation:
- why the most general type is int->'a and not 'a -> 'b?
Because if I need a function of type int -> 'a I can give a function
of type 'a -> 'b.
But if I need a function of type 'a -> 'b I can not use a function of
type int -> 'a.
So int -> 'a is more general and 'a -> 'b is more specific.
General rule : if a < b then (a->c) > (b->c)
- does this mean that I can't have a general type that could be
matched
by 'a -> 'a list -> 'a list and int -> int -> int ?
if you want to get a supertype of a -> b and c -> d you need to
find a subtype of a and c AND find a supertype of b and d.
So for example for ('a -> ( 'a list -> 'a list)) and (int -> (int ->
int))
you need
- a subtype of 'a and int : it's int. you have one.
- a supertype of ('a list -> 'a list) and (int -> int) (reapply the
same procedure)
-a subtype of 'a list and int : there is no such thing in
ocaml, so there is no supertype.
So to answer your question, you can't. But as Jacques Garrigue said,
you don't need either,
and you can use abstract type and "with type" construction.
Walter
--
--
Caml-list mailing list. Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs