如何在ocaml中定义相互递归的类和异常

时间:2015-10-24 21:35:53

标签: class exception recursion ocaml

我想定义一个类foo和一个异常X,它的构造函数将一对foo作为参数。类foo的方法应该能够引发异常X ...我无法设法为这些语法提供正确的语法。任何人都可以建议怎么做?

1 个答案:

答案 0 :(得分:1)

这是一个头脑风暴的建议。由于OCaml对类使用结构类型,因此可以在定义异常之前将类声明为类型。这是一个适合我的草图:

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

当然这有点麻烦。