module Liste = struct
exception Nil
class virtual ['a] liste =
object (_:'alist)
method virtual hd : 'a
method virtual tl : 'alist
method virtual null : bool
method virtual length : int
end
class ['a] nil =
object
inherit ['a] liste
method hd = raise Nil method tl = raise Nil
method null = true method length = 0
end
class ['a] cons h t =
object
inherit ['a] liste
val hd = h val tl = t
method hd = h
method tl = t
method null = false
method length = 1 + tl#length
end
end;;
|
|