[back]

Rose Trees to S-Expressions

type 'a rtree = Node of 'a * 'a rtree list

type 'a sexpr =
  | Atom of 'a
  | List of 'a sexpr list

Implement the function

val sexpr_of_rtree : 'a rtree -> 'a sexpr

so that it's the right-inverse of rtree_of_sexpr.

Examples

let t = Node ("foo", [Node ("bar", []); Node ("baz", [])])
let _ = assert (rtree_of_sexpr (sexpr_of_rtree t) = Some t)