Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] References to polymorphic variants
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Eric C. Cooper <ecc@c...>
Subject: Re: [Caml-list] References to polymorphic variants
On Wed, Feb 25, 2004 at 03:07:19PM -0800, Issac Trotts wrote:
> He's talking about compiling it, which is slightly different:
> 
> $ cat foo.ml
> let (x : ([> ] option) ref ) = ref None ;;
> 
> $ /usr/bin/ocamlc -c foo.ml
> File "foo.ml", line 1, characters 31-39:
> The type of this expression, _[>  ] option ref,
> contains type variables that cannot be generalized
> 
> The set of values that x can have is still unspecified, so there is
> implicitly a type variable whose value needs to be nailed down before
> the example can compile.  Here's a way to work around it:
> 
> type t = [ `bleh | `woof ];;
> let x = ref (None : t option);; 

Or, he can just use x in the scope of that module, if that's
sufficient for his application.

$ cat foo.ml 
let (x : [> ] option ref) = ref None

let () =
  x := Some `Apple;
  x := Some (`Pair (17, "foo"));
  x := Some `Cheese

$ ocamlc -i -c foo.ml
val x : _[> `Apple | `Cheese | `Pair of int * string ] option ref

-- 
Eric C. Cooper          e c c @ c m u . e d u

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