Goswin von Brederlow wrote: <snip> > Then what about > > type t1 = Bar of int * int > type t2 = Foo of (int * int) > > If you treat constructors as functions taking one argument then
But why (so arbitrarily) do this? > t1: int * int -> t1 > t2: int * int -> t2 If you look at each type definition and choose those most appropriate, then: t1: int -> int -> t1 t2: int * int -> t2 I don't see your point (but this is pre-coffee!)? The fact that you write [Bar(1, 2)] for a two-constructor variant tag and [bar 1 2] for a "2 argument" function is just an (occasionally irritating) oddity of the OCaml syntax - it wouldn't have to affect any derived constructor functions here. However, the impracticality of importing the types from other interfaces (see Richard Jones post in this thread) has already revealed that this couldn't be done transparently in the way I'd initially thought so it's become a bit of a thought experiment anyway :o) David _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs