section ‹ Enumeration Types › theory Enum_Type imports Haskell_Show keywords "enumtype" :: "thy_defn" begin ML_file ‹Enum_Type.ML› ML ‹ val _ = Outer_Syntax.command @{command_keyword enumtype} "define enumeration types" ((Parse.name -- (@{keyword "="} |-- Scan.repeat (Parse.name --| @{keyword "|"}) -- Parse.name)) >> (fn (tname, (cs, c)) => Toplevel.theory (Enum_Type.enum_type tname (cs @ [c])))); › declare UNIV_enum [code_unfold] end