caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] an issue with coercing private types
@ 2013-05-08 23:34 Milan Stanojević
  2013-05-09  0:57 ` Markus Mottl
  2013-05-09  3:53 ` Jacques Garrigue
  0 siblings, 2 replies; 4+ messages in thread
From: Milan Stanojević @ 2013-05-08 23:34 UTC (permalink / raw)
  To: Caml List

I have this module

module Foo : sig
  type 'a t = private int
end = struct
  type 'a t = int
end

and then I want to coerce Foo.t into int
let to_int (a : 'a Foo.t) = (a :> int)

this fails to compile with
Error: This expression cannot be coerced to type int; it has type 'a Foo.t
       but is here used with type int

but this compiles fine
let to_int a = (a : 'a Foo.t :> int)

and gives me the right type.

What is wrong with the first version of [to_int]? Is this a bug in the
compiler? I'm using ocaml 4.0.1

I also tried this with Foo.t that doesn't have phantom type variable
and in that case both versions of [to_int] work.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-05-09  3:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-08 23:34 [Caml-list] an issue with coercing private types Milan Stanojević
2013-05-09  0:57 ` Markus Mottl
2013-05-09  2:26   ` Milan Stanojević
2013-05-09  3:53 ` Jacques Garrigue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).