Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Weak type, Open type
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: SooHyoung Oh <shoh@d...>
Subject: Re: [Caml-list] Weak type, Open type
Thanks for you reply.
Fortunately, I'm using Ocaml 3.05 and polymophic method works well.
But coding as your comments on weak type makes an error. See followings.

> From: "SooHyoung Oh" <shoh@duonix.com>
>
> > While I've studying design pattern with ocaml,
> > I made the followding 3 classes (PART1):
> > (1) class virtual entry: base class
> > (2) class file: subclass of "entry" class
> > (3) class dir: subclass of "entry" class
> >
> > I made some code using these classes on top level and it's ok. (PART 2).
> > While I translate the top level code into new class definition (PART3),
it
> > makes some error.
> > The error message is on (PART 4).
> >
> > It seems that (PART2) is weak type and (PART 3) is open type.
>
> Not weak: file_list has a weak type variable, but it gets immediatly
> instanciated to entry; and add is really polymorphic.
>
> > [Q 1] Is (PART2) is correct? I don't know why it doesn't make type
error.
> Yes. What's wrong?
> Note that your #entry is meaningless, since it is immediatly
> instanciated to entry. You could as well write entry list from the
> beginning, or nothing at all.
>

The types of (PART2) are
    val file_list : _#entry list ref = {contents = []}
    val add : #entry -> unit = <fun>
After removing '#':
    val file_list : entry list ref = {contents = []}
    val add : _#entry -> unit = <fun>

Using "entry" instead of "#entry" produces the following:
    This expression has type
      file = < file_size : unit -> int; name : unit -> string >
    but is here used with type < dir_size : unit -> int; name : unit ->
string >
    Only the second object type has a method dir_size

[Deleted ...]


-------------------
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