- let print t ~k_to_string ~indent_level =
- let (_, nodes) =
- fold t
- ~f:(fun (indentation, nodes) (k, _) ->
- let indentation = indent_level ^ indentation in
- let node = indentation ^ (k_to_string k) in
- (indentation, node :: nodes)
- )
- ~init:(indent_level, [])
+ let to_dot t ~k_to_string =
+ let (edges, _) =
+ List.fold_left (to_edges t)
+ ~init:("", "\n")
+ ~f:(fun (edges, sep) (k1, k2) ->
+ let k1, k2 = k_to_string k1, k_to_string k2 in
+ (Printf.sprintf "%s%s%S -> %S;\n" edges sep k1 k2, "")
+ )