12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485open!ImportincludeSexplib0.SexpablemoduleOf_sexpable(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)endmoduleOf_sexpable1(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)endmoduleOf_sexpable2(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);;endmoduleOf_sexpable3(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);;endmoduleOf_stringable(M:Stringable.S):Swithtypet:=M.t=structlett_of_sexpsexp=matchsexpwith|Sexp.Atoms->(tryM.of_stringswith|exn->of_sexp_error_exnexnsexp)|Sexp.List_->of_sexp_error"Sexpable.Of_stringable.t_of_sexp expected an atom, but got a list"sexp;;letsexp_of_tt=Sexp.Atom(M.to_stringt)end