From: "Issac Trotts" <ijtrotts@ucdavis.edu>
To: caml-list@inria.fr
Subject: Re: [Caml-list] References to polymorphic variants
Date: Wed, 25 Feb 2004 15:07:19 -0800 [thread overview]
Message-ID: <20040225230719.GA1148@manzanita> (raw)
In-Reply-To: <20040225224109.GC3578@localhost>
On Wed, Feb 25, 2004 at 05:41:09PM -0500, Eric C. Cooper wrote:
> On Wed, Feb 25, 2004 at 09:05:48AM -0700, nickgrey@softhome.net wrote:
> > I want to be able to store an arbitrary polymorphic variant in a reference:
> >
> > let (x : ([> ] option) ref ) = ref None ;;
> >
> > (Not my actual code, I've boiled it down to a minimal example.)
> >
> > This won't compile because it "contains a type variable which cannot be
> > generalized".
>
> It works in version 3.07+2:
>
> Objective Caml version 3.07+2
>
> # let (x : [> ] option ref) = ref None;;
> val x : _[> ] option ref = {contents = None}
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
$ /usr/bin/ocamlc -v
The Objective Caml compiler, version 3.07+2
Standard library directory: /usr/lib/ocaml/3.07
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);;
--
Issac Trotts
http://redwood.ucdavis.edu/~issac
-------------------
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
next prev parent reply other threads:[~2004-02-25 23:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-25 16:05 nickgrey
2004-02-25 22:41 ` Eric C. Cooper
2004-02-25 23:07 ` Issac Trotts [this message]
2004-02-26 1:49 ` Eric C. Cooper
2004-02-26 1:53 ` Eric C. Cooper
2004-02-26 4:39 ` Jacques Garrigue
2004-02-25 22:56 ` [Caml-list] Re: Caml-list " Remi Vanicat
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040225230719.GA1148@manzanita \
--to=ijtrotts@ucdavis.edu \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox