4
考慮以下小OCaml的類層次結構:類方法可見細化
class x = object method i = 0 end ;;
class y = object method x = new x end ;;
class x2 = object method i = 0 method j = 1 end ;;
class z = object method x = new x2 inherit y end;; (* type error *)
我想實現的是細化領域class z
w.r.t.的x
class y
並有細化可見在z的類型,即
class z = object method x = (new x2 :> x) inherit y end;;
(new z)#x#j;; (* type error *)
是不我想達到的目標。
我相當有信心,有一種方法來說服細化的兼容性的類型檢查,但如何?