OCaml sexplib, как определить пользовательскую функцию to_sexplib?
Я использую with sexp
синтаксис для автоматического генерирования функций s-exp.
Проблема в том, что у структур данных, которые я печатаю с помощью sexplib, есть несколько рекурсивных указателей, и печать заканчивается переполнением стека.
Поэтому мне нужно переопределить функцию to_sexp и заставить ее просто вернуть "(SomeRecursiveData)"
, Как мне это сделать?
ПРИМЕЧАНИЕ: мои определения данных в форме:
type somedata ...
and someotherdata ...
and this_is_problematic_recursive_data
and ....
with sexp
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