123456789101112131415161718192021222324(** Defunctionalised higher-kinded types. See "Lightweight Higher-Kinded
Polymorphism" (Yallop and White, 2014) for more details. *)type('a,'f)appmoduleBranded=structmoduletypeS=sigtype'attypebrexternalinj:'at->('a,br)app="%identity"externalprj:('a,br)app->'at="%identity"endmoduleMake(T:sigtype'atend):Swithtype'at:='aT.t=structtype'at='aT.ttypebrexternalinj:'at->('a,br)app="%identity"externalprj:('a,br)app->'at="%identity"endend