let print_exp exp = 
  let rec string_of_exp exp = match exp with
    |Const v                ->        "Const" ^ " (" ^ (string_of_value v) ^ ")"
    |Ident s                ->        "Ident" ^ " \"" ^ "s" ^ "\""
    |Par (e1, e2)        ->        "Par" ^ " (" ^ (string_of_exp e1) ^ ", " ^ (string_of_exp e2) ^ ")"
    |Seq (e1, e2)        ->        "Seq" ^ " (" ^ (string_of_exp e1) ^ ", " ^ (string_of_exp e2) ^ ")"
    |Split (e1, e2)        ->        "Split" ^ " (" ^ (string_of_exp e1) ^ ", " ^ (string_of_exp e2) ^ ")"
    |Merge (e1, e2)        ->        "Merge" ^ " (" ^ (string_of_exp e1) ^ ", " ^ (string_of_exp e2) ^ ")"
    |Rec (e1, e2)        ->        "Rec" ^ " (" ^ (string_of_exp e1) ^ ", " ^ (string_of_exp e2) ^ ")"
  in
    print_string("Parer : Types.faust_exp = "^ (string_of_exp exp))