4

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

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

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

注意:我的数据定义格式为:

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

1 回答 1

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
于 2013-01-16T11:46:53.480 回答