[
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: | Ohad Rodeh <orodeh@c...> |
| Subject: | Ref polymorphism restriction |
List,
The following program does not compile, with a
rather strange error message.
module type SIG =
sig
val l : '_a list ref
val f : '_a -> unit
end
module M : SIG =
struct
let l = ref []
let f a = l:= a::!l
end
Modules do not match:
sig val l : '_a list ref val f : '_a -> unit end
is not included in
SIG
Values do not match:
val l : '_a list ref
is not included in
val l : 'a list ref
Note that the signature for list l IS '_a list ref.
I suppose this is due to the restriction on polymorphic references.
Is the OCaml restriction such that references may only be local to
a single module? Is there a different restriction?
Ohad.
----------------------------------------------------------
orodeh@cs.huji.ac.il
www.cs.huji.ac.il/~orodeh