///|
/// A trait for types that can be converted to an S-expression.
pub(open) trait ToSexp {
  to_sexp(Self) -> Sexp
}

///|
/// A trait for types that can be constructed from an S-expression.
pub(open) trait FromSexp {
  from_sexp(Sexp, SexpPath) -> Self raise SexpError
  sexp_path_key(Self) -> Symbol? = _
}