245 * Thm.instantiate, Thm.generalize and related operations require |
245 * Thm.instantiate, Thm.generalize and related operations require |
246 scalable datastructures from structure TVars, Vars, Names etc. |
246 scalable datastructures from structure TVars, Vars, Names etc. |
247 INCOMPATIBILITY: e.g. use TVars.empty and TVars.make for immediate |
247 INCOMPATIBILITY: e.g. use TVars.empty and TVars.make for immediate |
248 adoption; better use TVars.add, TVars.add_tfrees etc. for scalable |
248 adoption; better use TVars.add, TVars.add_tfrees etc. for scalable |
249 accumulation of items. |
249 accumulation of items. |
|
250 |
|
251 * The "build" combinators of various data structures help to build |
|
252 content from bottom-up, by applying an "add" function the "empty" value. |
|
253 For example: |
|
254 |
|
255 - type 'a Symtab.table etc.: build |
|
256 - Type 'a Names.table etc.: build |
|
257 - type 'a list: build and build_rev |
|
258 - type Buffer.T: build and build_content |
|
259 |
|
260 For example, see src/Pure/PIDE/xml.ML: |
|
261 |
|
262 val content_of = Buffer.build_content o fold add_content; |
250 |
263 |
251 * ML antiquotations \<^try>\<open>expr\<close> and \<^can>\<open>expr\<close> operate directly on |
264 * ML antiquotations \<^try>\<open>expr\<close> and \<^can>\<open>expr\<close> operate directly on |
252 the given ML expression, in contrast to functions "try" and "can" that |
265 the given ML expression, in contrast to functions "try" and "can" that |
253 modify application of a function. |
266 modify application of a function. |
254 |
267 |