Module redefinition is possible
With an empty file foo.sk
, the following code will compile successfully.
(* file: main.sk *)
require foo
open foo
module foo = struct
type t = A
end
val x:t = A
But, as far as I know, we're not supposed to be able to do such a thing.