Version française
Home     About     Download     Resources     Contact us    
Browse thread
Polymorphic method question
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: brogoff <brogoff@s...>
Subject: Polymorphic method question
Hi,
    I'm sure I'll slap my forehead in disgust when someone lifts the
scales from my eyes, but I'm once again perplexed by a type error
from OCaml when using objects. Can someone tell me why I get the
error from the second case (with the classes connected by "and") when
the first case is OK?

   BTW, This example was distilled from one in which I could not cleanly
remove the class recursion, one involving an "extensible visitor" in
which there is a recursion between the visited and visitor classes.
Assuming there's an obvious answer to my first question, is there a
nice workaround in this case?

brogoff@denali[tricks]$ ocaml
        Objective Caml version 3.09.2

# class virtual ['a] bar =
    object
      method virtual get : 'a
    end;;
      class virtual ['a] bar : object method virtual get : 'a end
# class virtual foobar =
    object
      method virtual f : 'a . 'a bar -> 'a
    end;;
      class virtual foobar : object method virtual f : 'a bar -> 'a end
# class virtual ['a] bar =
    object
      method virtual get : 'a
    end
  and foobar =
    object
      method virtual f : 'a . 'a bar -> 'a
    end;;
              Characters 115-132:
        method virtual f : 'a . 'a bar -> 'a
                           ^^^^^^^^^^^^^^^^^
This type scheme cannot quantify 'a :
it escapes this scope.

-- 
-- Brian