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
Другие вопросы по тегам