[
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: | 2009-12-20 (18:17) |
From: | Nicolas Pouillard <nicolas.pouillard@g...> |
Subject: | Re: [Caml-list] obj.magic for polymorphic record fields |
Excerpts from Jacques Le Normand's message of Sun Dec 20 18:44:57 +0100 2009: > Dear ocaml-list, > the following code does not type check: > > type foo = {bar : 'a. 'a -> 'a} > let a : int -> int = fun x -> x > let baz = {bar = Obj.magic a} > > with the error > > Error: This field value has type 'a -> 'a which is less general than > 'b. 'b -> 'b > > > my question is: how could I use obj.magic to get a polymorphic type? Apart from the traditional "You should avoid Obj.magic as much as possible!" I once faced this situation and the solution is to use modules. module M : sig val f : 'a -> 'a end = struct let f = Obj.magic end ;; let baz = {bar = M.f };; Have fun! -- Nicolas Pouillard http://nicolaspouillard.fr