Browse thread
Type constraints
[
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: | 1997-06-02 (12:22) |
From: | Pascal Brisset <brisset@r...> |
Subject: | Type constraints |
Ernesto Posse writes: « type 'a node = {x: 'a; y: t1} « and t1 = A | B of t1*t1 « and t2 = C | D of (string * t2) node | E of bool node « « I obtain this message: « « Characters 98-102: « This type parameter bool should be an instance of type string * t2 It may be compared to a similar expression at the term level: # let rec f = fun x -> x and g = f 1, f "1";; ^^^ This expression has type string but is here used with type int In a recursive definition, occurrences of the defined idents have the same type everywhere, i.e. the generalization (in your case, 'a is any type) is done only ``at the end'' of the definition. At the term level, ML+ is the (undecidable) solution to this kind of recursive definition. I guess problems are similar at the type level. A more precise answer from a Caml guru ? --Pascal Brisset