equal
deleted
inserted
replaced
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; |