src/Pure/Syntax/type_ext.ML
changeset 1511 09354d37a5ab
parent 764 b60e77395d1a
child 2438 b630fded4566
equal deleted inserted replaced
1510:4588ba1b1438 1511:09354d37a5ab
     4 
     4 
     5 The concrete syntax of types (used to bootstrap Pure).
     5 The concrete syntax of types (used to bootstrap Pure).
     6 *)
     6 *)
     7 
     7 
     8 signature TYPE_EXT0 =
     8 signature TYPE_EXT0 =
     9 sig
     9   sig
    10   val raw_term_sorts: term -> (indexname * sort) list
    10   val raw_term_sorts: term -> (indexname * sort) list
    11   val typ_of_term: (indexname * sort) list -> (indexname -> sort) -> term -> typ
    11   val typ_of_term: (indexname * sort) list -> (indexname -> sort) -> term -> typ
    12 end;
    12   end;
    13 
    13 
    14 signature TYPE_EXT =
    14 signature TYPE_EXT =
    15 sig
    15   sig
    16   include TYPE_EXT0
    16   include TYPE_EXT0
    17   structure SynExt: SYN_EXT
    17   val term_of_typ: bool -> typ -> term
    18   local open SynExt SynExt.Ast in
    18   val tappl_ast_tr': Ast.ast * Ast.ast list -> Ast.ast
    19     val term_of_typ: bool -> typ -> term
    19   val type_ext: SynExt.syn_ext
    20     val tappl_ast_tr': ast * ast list -> ast
    20   end;
    21     val type_ext: syn_ext
       
    22   end
       
    23 end;
       
    24 
    21 
    25 functor TypeExtFun(structure Lexicon: LEXICON and SynExt: SYN_EXT): TYPE_EXT =
    22 structure TypeExt : TYPE_EXT =
    26 struct
    23 struct
    27 
    24 open Lexicon SynExt Ast;
    28 structure SynExt = SynExt;
       
    29 open Lexicon SynExt SynExt.Ast;
       
    30 
       
    31 
    25 
    32 (** raw_term_sorts **)
    26 (** raw_term_sorts **)
    33 
    27 
    34 fun raw_term_sorts tm =
    28 fun raw_term_sorts tm =
    35   let
    29   let
   180    [],
   174    [],
   181    [],
   175    [],
   182    [("fun", fun_ast_tr')])
   176    [("fun", fun_ast_tr')])
   183   ([], []);
   177   ([], []);
   184 
   178 
   185 
       
   186 end;
   179 end;