more appropriate mk_typerep
authorhaftmann
Sun, 21 Jun 2009 08:38:57 +0200
changeset 31736 926ebca5a145
parent 31735 a00292a5587d
child 31737 b3f63611784e
more appropriate mk_typerep
src/HOL/Tools/hologic.ML
--- a/src/HOL/Tools/hologic.ML	Sun Jun 21 08:38:57 2009 +0200
+++ b/src/HOL/Tools/hologic.ML	Sun Jun 21 08:38:57 2009 +0200
@@ -603,8 +603,11 @@
 
 val typerepT = Type ("Typerep.typerep", []);
 
-fun mk_typerep T = Const ("Typerep.typerep_class.typerep",
-  Term.itselfT T --> typerepT) $ Logic.mk_type T;
+fun mk_typerep (Type (tyco, Ts)) = Const ("Typerep.typerep.Typerep",
+      literalT --> listT typerepT --> typerepT) $ mk_literal tyco
+        $ mk_list typerepT (map mk_typerep Ts)
+  | mk_typerep (T as TFree _) = Const ("Typerep.typerep_class.typerep",
+      Term.itselfT T --> typerepT) $ Logic.mk_type T;
 
 val termT = Type ("Code_Eval.term", []);