Browse thread
Type from local module would escape its scope?
[
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: | -- (:) |
| From: | Jean-Marie Gaillourdet <jm@g...> |
| Subject: | Re: [Caml-list] Type from local module would escape its scope? |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
On 03.07.2006, at 15:19, Bruno De Fraine wrote:
> While the following is rejected:
>
> let foo (ignore: 'a -> unit) =
> let module Foo : FOO =
> struct
> type t = int
> let value = 1
> end in
> ignore Foo.value
> ;;
>
> With an error on the expression "Foo.value" stating that "The type
> constructor Foo.t would escape its scope". Reading about the
> typical case for this error message in http://caml.inria.fr/pub/ml-
> archives/caml-list/2002/10/0cf087feab3ef8dc5ccba5a8592472fb.en.html
> didn't really help me. Why does it make a difference whether ignore
> is an argument?
Let us extend your example with the following code:
> let foo (ignore: 'a -> unit) =
> let module Foo : FOO =
> struct
> type t = int
> let value = 1
> end in
> ignore Foo.value
> ;;
let bar (ignore: 'b -> unit) =
let module Foo : FOO =
struct
type t = float
let value = 1.0
end in
ignore Foo.value
let baz () =
let x = ignore in begin
foo x;
bar x
end
Which type should x have?
Best Regards,
Jean-Marie
PS: didn't compile that code
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFEqR28NIUNP/I5YOgRAoRcAKDKWlxVFBKYfdmBvPJ/T2LYrwKu+ACfYJnK
LUIeev+RCMoifUFF5ZNJVK0=
=mEs/
-----END PGP SIGNATURE-----