【发布时间】:2013-01-16 09:51:59
【问题描述】:
我正在使用with sexp 语法自动生成 s-exp 函数。
问题是我使用 sexplib 打印的数据结构有一些递归指针,打印最终会导致堆栈溢出。
所以我需要重写一个 to_sexp 函数,让它只返回"(SomeRecursiveData)",我该怎么做呢?
注意:我的数据定义格式为:
type somedata ...
and someotherdata ...
and this_is_problematic_recursive_data
and ....
with sexp
【问题讨论】:
-
你真的需要
this_is_problematic_recursive_data和其他类型的定义一样,还是可以在之前定义?想法是在模块Foo中定义它,类型为t,to_exp在同一模块中定义。如果不可能,您可能应该使用递归模块。 -
@FabriceLeFessant 我不明白你的解决方案(我是 OCaml 的新手),但我认为模块没有帮助。我的问题是我有一个参考列表,其中一个参考在运行时的某个点指向列表本身。我想覆盖该数据类型(带有引用列表的那个) to_sexp 以防止这种情况发生。
标签: ocaml s-expression