Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Baffling typing problem
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jacques Garrigue <garrigue@k...>
Subject: Re: [Caml-list] Baffling typing problem
From: Alessandro Baretta <alex@baretta.com>
[..]
> I attempt to compile it with ocamlc I get this error message:
> File "prova.ml", line 1, characters 16-169:
> Warning: this pattern-matching is not exhaustive.
> Here is an example of a value that is not matched:
> ""
> File "prova.ml", line 6, characters 11-27:
> The type of this expression,
> _[> `BANG of _[> `Foo] * '_a list * '_b list
>    | `WHIZ of _[> `Bar] * _[> `Frob | `Twid] list
>    | `WHOA of _[> `Foo] * _[> `Frob | `Knob | `Twid] list],
> contains type variables that cannot be generalized

This is not really related to polymorphic variants, only to the fact
they are polymorphic.
Due to the value-only restriction, you have an expression that cannot
be generalized. Since it contains some type variables, the compiler
cannot produce a .cmi from it.

> Is there any way around this limitation?

Write a .mli, or just explicitly put a type annotation on that
expression.

Seeing the shape of your type, it may be the case that the CVS version
of ocaml could generalize it (actually this is sound). This should
avoid some of such problems.

Jacques Garrigue
-------------------
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