OCaml sexplib,如何定义自定义to_sexplib函数?

时间:2013-01-16 09:52:00

标签: ocaml s-expression

我正在使用with sexp语法自动生成s-exp函数。

问题是我用sexplib打印的数据结构有一些递归指针,打印最终会出现堆栈溢出。

所以我需要覆盖一个to_sexp函数并让它返回"(SomeRecursiveData)",我该怎么做?

注意:我的数据定义如下:

type somedata ...
and someotherdata ...
and this_is_problematic_recursive_data
and ....
with sexp

1 个答案:

答案 0 :(得分:1)

我不能说我完全理解你的问题,但是如果函数to_sexp不是交叉递归的(即let rec to_sexp = ...而不是let rec to_sexp = ..... and foo = .... calls to_sexp somewhere.....)你可以尝试这个技巧:

module A = struct type t with sexp end

module B = struct 
  include A
  let to_sexp = .... your code ...
end