let infix pp1 op pp2 fmt (a, b) =
  match !flag with
    | Sexpr -> sexpr2 pp1 pp2 fmt (op, a, b)
    | Prefix -> fprintf fmt "%s" op; pair pp1 pp2 fmt (a, b)
    | Mixfix -> fprintf fmt ""; pp1 fmt a; fprintf fmt " %s " op; pp2 fmt b; fprintf fmt ""