* [Caml-list] odd typing behavior
@ 2004-06-21 14:05 Henri DF
2004-06-21 14:25 ` Nicolas Cannasse
0 siblings, 1 reply; 2+ messages in thread
From: Henri DF @ 2004-06-21 14:05 UTC (permalink / raw)
To: caml-list
Here is a boiled-down example of a problem that i can't figure out.
Can anyone explain this ?
thanks
henri
version 1:
---------
Compiling this fails with
File "proto/str/test.ml", line 5, characters 5-109:
The abbreviation c expands to type < dump_state : persist_t >
but is used with type < .. >
let h = Hashtbl.create 1
type persist_t = {rt : int}
class c =
object(s)
initializer
Hashtbl.replace h 1 (s :> c);
method dump_state = {rt=1 }
end
version 2:
---------
Same as version 1, except we use a float rather than a record
for type persist_t. This one compiles fine.
let h = Hashtbl.create 1
type persist_t = float
class c =
object(s)
initializer
Hashtbl.replace h 1 (s :> c);
method dump_state = 1.0
end
version 3:
---------
Same as version 1, except the first 2 lines are interchanged. This one
compiles fine.
type persist_t = {rt : int}
let h = Hashtbl.create 1
class c =
object(s)
initializer
Hashtbl.replace h 1 (s :> c);
method dump_state = {rt=1 }
end
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Caml-list] odd typing behavior
2004-06-21 14:05 [Caml-list] odd typing behavior Henri DF
@ 2004-06-21 14:25 ` Nicolas Cannasse
0 siblings, 0 replies; 2+ messages in thread
From: Nicolas Cannasse @ 2004-06-21 14:25 UTC (permalink / raw)
To: Henri DF, caml-list
> Here is a boiled-down example of a problem that i can't figure out.
> Can anyone explain this ?
>
> thanks
> henri
That's a normal behavior : the compiler can't infer correctly the monorphic
type of the Hashtbl if this type have been declared after the instance is
created. (that's version 1 against 3). For version 2 , you're only defining
a type alias, not a new type, so there is no problem with that. Objects here
are not an issue, you can get the same behavior without them, but looks like
in this case the (more readable) error message is lost :
# let h = Hashtbl.create 0;;
val h : ('_a, '_b) Hashtbl.t = <abstr>
# type t = { x : int };;
type t = { x : int; }
# Hashtbl.add h 3 { x = 5 };;
Characters 16-25:
Hashtbl.add h 3 { x = 5 };;
^^^^^^^^^
This expression has type t but is here used with type 'a
The type constructor t would escape its scope
Regards,
Nicolas Cannasse
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-06-21 14:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-21 14:05 [Caml-list] odd typing behavior Henri DF
2004-06-21 14:25 ` Nicolas Cannasse
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).