functor (Id : Sig.Id-> functor (P : Sig.Printer(PreCast.Ast).S-> sig  end