如何在ocaml中定义相互递归class和异常
how to define mutually-recursive class and exception in ocaml
我想定义一个 class foo 和一个异常 X,其构造函数以一对 foo 作为参数。 class foo 的方法应该能够引发异常 X...我无法设法获得这些的正确语法。谁能建议怎么做?
这是一个集思广益的建议。由于 OCaml 使用 classes 的结构类型,您可以在定义异常之前将 class 声明为类型。这是适合我的草图:
class type c = object method m : unit end
exception E of c * c
class myclass =
object (self)
method m : unit = raise (E ((self :> c), (self :> c)))
end
当然这有点麻烦。
我想定义一个 class foo 和一个异常 X,其构造函数以一对 foo 作为参数。 class foo 的方法应该能够引发异常 X...我无法设法获得这些的正确语法。谁能建议怎么做?
这是一个集思广益的建议。由于 OCaml 使用 classes 的结构类型,您可以在定义异常之前将 class 声明为类型。这是适合我的草图:
class type c = object method m : unit end
exception E of c * c
class myclass =
object (self)
method m : unit = raise (E ((self :> c), (self :> c)))
end
当然这有点麻烦。