method ctyp1 =
fun f ->
function
| Ast.TyApp (_, t1, t2) ->
(match get_ctyp_args t1 [ t2 ] with
| (_, [ _ ]) ->
pp f "@[<2>%a@ %a@]" o#simple_ctyp t1
o#simple_ctyp t2
| (a, al) ->
pp f "@[<2>%a@]" (list o#simple_ctyp "@ ")
(a :: al))
| Ast.TyPol (_, t1, t2) ->
let (a, al) = get_ctyp_args t1 []
in
pp f "@[<2>! %a.@ %a@]" (list o#ctyp "@ ")
(a :: al) o#ctyp t2
| t -> super#ctyp1 f t