1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
File "pr4018_bad.ml", line 42, characters 11-17:
42 | let f (x : entity entity_container) = ()
^^^^^^
Error: This type entity = < destroy_subject : id subject; entity_id : id >
should be an instance of type
< destroy_subject : < add_observer : 'a entity_container -> 'b; .. >;
.. >
as 'a
Type
id subject =
< add_observer : (id subject, id) observer -> unit;
notify_observers : id -> unit >
is not compatible with type
< add_observer : < destroy_subject : 'c; .. > entity_container -> 'b;
.. >
as 'c
Type (id subject, id) observer = < notify : id subject -> id -> unit >
is not compatible with type
(< destroy_subject : < add_observer : 'd -> 'b; .. >; .. > as 'a)
entity_container as 'd =
< add_entity : 'a -> 'b; notify : 'a -> id -> unit >
The method add_observer has type (id subject, id) observer -> unit,
but the expected method type was
< destroy_subject : < add_observer : 'e; .. >; .. > entity_container ->
'b as 'e
|