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 に答える