let triple pp1 pp2 pp3 fmt (a, b, c) =
  match !flag with
    | Sexpr ->  sexpr3 pp1 pp2 pp3 fmt (":triple", a, b, c) 
    | _ -> fprintf fmt "("; pp1 fmt a; string fmt ","; pp2 fmt b; string fmt ","; pp3 fmt c; fprintf fmt ")@?"