123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106open!ImportincludeBase.SexpablemoduleStable=structmoduleOf_sexpable=structmoduleV1(Sexpable:S)(M:sigtypetvalto_sexpable:t->Sexpable.tvalof_sexpable:Sexpable.t->tend):Swithtypet:=M.t=structlett_of_sexpsexp=lets=Sexpable.t_of_sexpsexpintryM.of_sexpableswith|exn->of_sexp_error_exnexnsexp;;letsexp_of_tt=Sexpable.sexp_of_t(M.to_sexpablet)endendmoduleOf_sexpable1=structmoduleV1(Sexpable:S1)(M:sigtype'atvalto_sexpable:'at->'aSexpable.tvalof_sexpable:'aSexpable.t->'atend):S1withtype'at:='aM.t=structlett_of_sexpa_of_sexpsexp=lets=Sexpable.t_of_sexpa_of_sexpsexpintryM.of_sexpableswith|exn->of_sexp_error_exnexnsexp;;letsexp_of_tsexp_of_at=Sexpable.sexp_of_tsexp_of_a(M.to_sexpablet)endendmoduleOf_sexpable2=structmoduleV1(Sexpable:S2)(M:sigtype('a,'b)tvalto_sexpable:('a,'b)t->('a,'b)Sexpable.tvalof_sexpable:('a,'b)Sexpable.t->('a,'b)tend):S2withtype('a,'b)t:=('a,'b)M.t=structlett_of_sexpa_of_sexpb_of_sexpsexp=lets=Sexpable.t_of_sexpa_of_sexpb_of_sexpsexpintryM.of_sexpableswith|exn->of_sexp_error_exnexnsexp;;letsexp_of_tsexp_of_asexp_of_bt=Sexpable.sexp_of_tsexp_of_asexp_of_b(M.to_sexpablet);;endendmoduleOf_sexpable3=structmoduleV1(Sexpable:S3)(M:sigtype('a,'b,'c)tvalto_sexpable:('a,'b,'c)t->('a,'b,'c)Sexpable.tvalof_sexpable:('a,'b,'c)Sexpable.t->('a,'b,'c)tend):S3withtype('a,'b,'c)t:=('a,'b,'c)M.t=structlett_of_sexpa_of_sexpb_of_sexpc_of_sexpsexp=lets=Sexpable.t_of_sexpa_of_sexpb_of_sexpc_of_sexpsexpintryM.of_sexpableswith|exn->of_sexp_error_exnexnsexp;;letsexp_of_tsexp_of_asexp_of_bsexp_of_ct=Sexpable.sexp_of_tsexp_of_asexp_of_bsexp_of_c(M.to_sexpablet);;endendmoduleOf_stringable=structmoduleV1(M:Stringable.S):Swithtypet:=M.t=structlett_of_sexpsexp=matchsexpwith|Sexplib.Sexp.Atoms->(tryM.of_stringswith|exn->of_sexp_error_exnexnsexp)|Sexplib.Sexp.List_->of_sexp_error"Sexpable.Of_stringable.t_of_sexp expected an atom, but got a list"sexp;;letsexp_of_tt=Sexplib.Sexp.Atom(M.to_stringt)endendmoduleTo_stringable=structmoduleV1(M:S):Stringable.Swithtypet:=M.t=structletof_stringx=Sexplib.Conv.of_string__of__of_sexpM.t_of_sexpxletto_stringx=Sexplib.Conv.string_of__of__sexp_ofM.sexp_of_txendendendmoduleTo_stringable=Stable.To_stringable.V1