172 \ \ \ \ {\isacharparenleft}update\ {\isacharparenleft}Suc\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}{\isacharcomma}\ {\isacharbrackleft}Suc\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}{\isacharbrackright}{\isacharparenright}\ {\isacharparenleft}Leaf\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}\ {\isacharbrackleft}{\isacharbrackright}{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}% |
172 \ \ \ \ {\isacharparenleft}update\ {\isacharparenleft}Suc\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}{\isacharcomma}\ {\isacharbrackleft}Suc\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}{\isacharbrackright}{\isacharparenright}\ {\isacharparenleft}Leaf\ {\isacharparenleft}Suc\ {\isadigit{0}}{\isacharparenright}\ {\isacharbrackleft}{\isacharbrackright}{\isacharparenright}{\isacharparenright}{\isacharparenright}{\isachardoublequoteclose}% |
173 \begin{isamarkuptext}% |
173 \begin{isamarkuptext}% |
174 \noindent Then we generate code% |
174 \noindent Then we generate code% |
175 \end{isamarkuptext}% |
175 \end{isamarkuptext}% |
176 \isamarkuptrue% |
176 \isamarkuptrue% |
177 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
177 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
178 \ example\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}tree{\isachardot}ML{\isachardoublequoteclose}% |
178 \ example\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}tree{\isachardot}ML{\isachardoublequoteclose}% |
179 \begin{isamarkuptext}% |
179 \begin{isamarkuptext}% |
180 \noindent which looks like: |
180 \noindent which looks like: |
181 \lstsml{Thy/examples/tree.ML}% |
181 \lstsml{Thy/examples/tree.ML}% |
182 \end{isamarkuptext}% |
182 \end{isamarkuptext}% |
255 \ \ {\isacharbar}\ {\isachardoublequoteopen}fac\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isacharequal}\ Suc\ n\ {\isacharasterisk}\ fac\ n{\isachardoublequoteclose}% |
255 \ \ {\isacharbar}\ {\isachardoublequoteopen}fac\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isacharequal}\ Suc\ n\ {\isacharasterisk}\ fac\ n{\isachardoublequoteclose}% |
256 \begin{isamarkuptext}% |
256 \begin{isamarkuptext}% |
257 \noindent This executable specification is now turned to SML code:% |
257 \noindent This executable specification is now turned to SML code:% |
258 \end{isamarkuptext}% |
258 \end{isamarkuptext}% |
259 \isamarkuptrue% |
259 \isamarkuptrue% |
260 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
260 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
261 \ fac\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fac{\isachardot}ML{\isachardoublequoteclose}% |
261 \ fac\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fac{\isachardot}ML{\isachardoublequoteclose}% |
262 \begin{isamarkuptext}% |
262 \begin{isamarkuptext}% |
263 \noindent The \isa{{\isasymCODEGEN}} command takes a space-separated list of |
263 \noindent The \isa{{\isasymEXPORTCODE}} command takes a space-separated list of |
264 constants together with \qn{serialization directives} |
264 constants together with \qn{serialization directives} |
265 These start with a \qn{target language} |
265 These start with a \qn{target language} |
266 identifier, followed by a file specification |
266 identifier, followed by a file specification |
267 where to write the generated code to. |
267 where to write the generated code to. |
268 |
268 |
308 {\isafoldML}% |
308 {\isafoldML}% |
309 % |
309 % |
310 \isadelimML |
310 \isadelimML |
311 % |
311 % |
312 \endisadelimML |
312 \endisadelimML |
313 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
313 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
314 \ pick{\isacharunderscore}some\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fail{\isacharunderscore}const{\isachardot}ML{\isachardoublequoteclose}% |
314 \ pick{\isacharunderscore}some\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fail{\isacharunderscore}const{\isachardot}ML{\isachardoublequoteclose}% |
315 \begin{isamarkuptext}% |
315 \begin{isamarkuptext}% |
316 \noindent will fail.% |
316 \noindent will fail.% |
317 \end{isamarkuptext}% |
317 \end{isamarkuptext}% |
318 \isamarkuptrue% |
318 \isamarkuptrue% |
373 \isadelimproof |
373 \isadelimproof |
374 \isanewline |
374 \isanewline |
375 % |
375 % |
376 \endisadelimproof |
376 \endisadelimproof |
377 \isanewline |
377 \isanewline |
378 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
378 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
379 \ pick\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}pick{\isadigit{1}}{\isachardot}ML{\isachardoublequoteclose}% |
379 \ pick\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}pick{\isadigit{1}}{\isachardot}ML{\isachardoublequoteclose}% |
380 \begin{isamarkuptext}% |
380 \begin{isamarkuptext}% |
381 \noindent This theorem now is used for generating code: |
381 \noindent This theorem now is used for generating code: |
382 |
382 |
383 \lstsml{Thy/examples/pick1.ML} |
383 \lstsml{Thy/examples/pick1.ML} |
387 \end{isamarkuptext}% |
387 \end{isamarkuptext}% |
388 \isamarkuptrue% |
388 \isamarkuptrue% |
389 \isacommand{lemmas}\isamarkupfalse% |
389 \isacommand{lemmas}\isamarkupfalse% |
390 \ {\isacharbrackleft}code\ func\ del{\isacharbrackright}\ {\isacharequal}\ pick{\isachardot}simps\ \isanewline |
390 \ {\isacharbrackleft}code\ func\ del{\isacharbrackright}\ {\isacharequal}\ pick{\isachardot}simps\ \isanewline |
391 \isanewline |
391 \isanewline |
392 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
392 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
393 \ pick\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}pick{\isadigit{2}}{\isachardot}ML{\isachardoublequoteclose}% |
393 \ pick\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}pick{\isadigit{2}}{\isachardot}ML{\isachardoublequoteclose}% |
394 \begin{isamarkuptext}% |
394 \begin{isamarkuptext}% |
395 \lstsml{Thy/examples/pick2.ML} |
395 \lstsml{Thy/examples/pick2.ML} |
396 |
396 |
397 \noindent Syntactic redundancies are implicitly dropped. For example, |
397 \noindent Syntactic redundancies are implicitly dropped. For example, |
418 \isadelimproof |
418 \isadelimproof |
419 \isanewline |
419 \isanewline |
420 % |
420 % |
421 \endisadelimproof |
421 \endisadelimproof |
422 \isanewline |
422 \isanewline |
423 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
423 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
424 \ fac\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fac{\isacharunderscore}case{\isachardot}ML{\isachardoublequoteclose}% |
424 \ fac\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}fac{\isacharunderscore}case{\isachardot}ML{\isachardoublequoteclose}% |
425 \begin{isamarkuptext}% |
425 \begin{isamarkuptext}% |
426 \lstsml{Thy/examples/fac_case.ML} |
426 \lstsml{Thy/examples/fac_case.ML} |
427 |
427 |
428 \begin{warn} |
428 \begin{warn} |
513 some Haskell systems enforce, each module ends |
513 some Haskell systems enforce, each module ends |
514 up in a single file. The module hierarchy is reflected in |
514 up in a single file. The module hierarchy is reflected in |
515 the file system, with root directory given as file specification.% |
515 the file system, with root directory given as file specification.% |
516 \end{isamarkuptext}% |
516 \end{isamarkuptext}% |
517 \isamarkuptrue% |
517 \isamarkuptrue% |
518 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
518 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
519 \ dummy\ \isakeyword{in}\ Haskell\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}{\isachardoublequoteclose}% |
519 \ dummy\ \isakeyword{in}\ Haskell\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}{\isachardoublequoteclose}% |
520 \begin{isamarkuptext}% |
520 \begin{isamarkuptext}% |
521 \lsthaskell{Thy/examples/Codegen.hs} |
521 \lsthaskell{Thy/examples/Codegen.hs} |
522 \noindent (we have left out all other modules). |
522 \noindent (we have left out all other modules). |
523 |
523 |
524 \medskip |
524 \medskip |
525 |
525 |
526 The whole code in SML with explicit dictionary passing:% |
526 The whole code in SML with explicit dictionary passing:% |
527 \end{isamarkuptext}% |
527 \end{isamarkuptext}% |
528 \isamarkuptrue% |
528 \isamarkuptrue% |
529 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
529 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
530 \ dummy\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}class{\isachardot}ML{\isachardoublequoteclose}% |
530 \ dummy\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}class{\isachardot}ML{\isachardoublequoteclose}% |
531 \begin{isamarkuptext}% |
531 \begin{isamarkuptext}% |
532 \lstsml{Thy/examples/class.ML} |
532 \lstsml{Thy/examples/class.ML} |
533 |
533 |
534 \medskip |
534 \medskip |
535 |
535 |
536 \noindent or in OCaml:% |
536 \noindent or in OCaml:% |
537 \end{isamarkuptext}% |
537 \end{isamarkuptext}% |
538 \isamarkuptrue% |
538 \isamarkuptrue% |
539 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
539 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
540 \ dummy\ \isakeyword{in}\ OCaml\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}class{\isachardot}ocaml{\isachardoublequoteclose}% |
540 \ dummy\ \isakeyword{in}\ OCaml\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}class{\isachardot}ocaml{\isachardoublequoteclose}% |
541 \begin{isamarkuptext}% |
541 \begin{isamarkuptext}% |
542 \lstsml{Thy/examples/class.ocaml} |
542 \lstsml{Thy/examples/class.ocaml} |
543 |
543 |
544 \medskip The explicit association of constants |
544 \medskip The explicit association of constants |
759 The membership test during preprocessing is rewritten, |
759 The membership test during preprocessing is rewritten, |
760 resulting in \isa{op\ mem}, which itself |
760 resulting in \isa{op\ mem}, which itself |
761 performs an explicit equality check.% |
761 performs an explicit equality check.% |
762 \end{isamarkuptext}% |
762 \end{isamarkuptext}% |
763 \isamarkuptrue% |
763 \isamarkuptrue% |
764 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
764 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
765 \ collect{\isacharunderscore}duplicates\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}collect{\isacharunderscore}duplicates{\isachardot}ML{\isachardoublequoteclose}% |
765 \ collect{\isacharunderscore}duplicates\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}collect{\isacharunderscore}duplicates{\isachardot}ML{\isachardoublequoteclose}% |
766 \begin{isamarkuptext}% |
766 \begin{isamarkuptext}% |
767 \lstsml{Thy/examples/collect_duplicates.ML}% |
767 \lstsml{Thy/examples/collect_duplicates.ML}% |
768 \end{isamarkuptext}% |
768 \end{isamarkuptext}% |
769 \isamarkuptrue% |
769 \isamarkuptrue% |
897 % |
897 % |
898 \begin{isamarkuptext}% |
898 \begin{isamarkuptext}% |
899 \noindent Then code generation succeeds:% |
899 \noindent Then code generation succeeds:% |
900 \end{isamarkuptext}% |
900 \end{isamarkuptext}% |
901 \isamarkuptrue% |
901 \isamarkuptrue% |
902 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
902 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
903 \ {\isachardoublequoteopen}op\ {\isasymle}\ {\isasymColon}\ {\isacharprime}a{\isasymColon}{\isacharbraceleft}eq{\isacharcomma}\ ord{\isacharbraceright}\ {\isasymtimes}\ {\isacharprime}b{\isasymColon}ord\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymtimes}\ {\isacharprime}b\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline |
903 \ {\isachardoublequoteopen}op\ {\isasymle}\ {\isasymColon}\ {\isacharprime}a{\isasymColon}{\isacharbraceleft}eq{\isacharcomma}\ ord{\isacharbraceright}\ {\isasymtimes}\ {\isacharprime}b{\isasymColon}ord\ {\isasymRightarrow}\ {\isacharprime}a\ {\isasymtimes}\ {\isacharprime}b\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline |
904 \ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}lexicographic{\isachardot}ML{\isachardoublequoteclose}% |
904 \ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}lexicographic{\isachardot}ML{\isachardoublequoteclose}% |
905 \begin{isamarkuptext}% |
905 \begin{isamarkuptext}% |
906 \lstsml{Thy/examples/lexicographic.ML}% |
906 \lstsml{Thy/examples/lexicographic.ML}% |
907 \end{isamarkuptext}% |
907 \end{isamarkuptext}% |
974 % |
974 % |
975 \begin{isamarkuptext}% |
975 \begin{isamarkuptext}% |
976 does not depend on instance \isa{monotype\ {\isasymColon}\ eq}:% |
976 does not depend on instance \isa{monotype\ {\isasymColon}\ eq}:% |
977 \end{isamarkuptext}% |
977 \end{isamarkuptext}% |
978 \isamarkuptrue% |
978 \isamarkuptrue% |
979 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
979 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
980 \ {\isachardoublequoteopen}op\ {\isacharequal}\ {\isacharcolon}{\isacharcolon}\ monotype\ {\isasymRightarrow}\ monotype\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline |
980 \ {\isachardoublequoteopen}op\ {\isacharequal}\ {\isacharcolon}{\isacharcolon}\ monotype\ {\isasymRightarrow}\ monotype\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline |
981 \ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}monotype{\isachardot}ML{\isachardoublequoteclose}% |
981 \ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}monotype{\isachardot}ML{\isachardoublequoteclose}% |
982 \begin{isamarkuptext}% |
982 \begin{isamarkuptext}% |
983 \lstsml{Thy/examples/monotype.ML}% |
983 \lstsml{Thy/examples/monotype.ML}% |
984 \end{isamarkuptext}% |
984 \end{isamarkuptext}% |
1037 {\isafoldtt}% |
1037 {\isafoldtt}% |
1038 % |
1038 % |
1039 \isadelimtt |
1039 \isadelimtt |
1040 % |
1040 % |
1041 \endisadelimtt |
1041 \endisadelimtt |
1042 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
1042 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
1043 \ in{\isacharunderscore}interval\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}literal{\isachardot}ML{\isachardoublequoteclose}% |
1043 \ in{\isacharunderscore}interval\ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}literal{\isachardot}ML{\isachardoublequoteclose}% |
1044 \begin{isamarkuptext}% |
1044 \begin{isamarkuptext}% |
1045 \lstsml{Thy/examples/bool_literal.ML} |
1045 \lstsml{Thy/examples/bool_literal.ML} |
1046 |
1046 |
1047 \noindent Though this is correct code, it is a little bit unsatisfactory: |
1047 \noindent Though this is correct code, it is a little bit unsatisfactory: |
1084 the corresponding mechanism. Each ``\verb|_|'' in |
1084 the corresponding mechanism. Each ``\verb|_|'' in |
1085 a serialization expression is treated as a placeholder |
1085 a serialization expression is treated as a placeholder |
1086 for the type constructor's (the constant's) arguments.% |
1086 for the type constructor's (the constant's) arguments.% |
1087 \end{isamarkuptext}% |
1087 \end{isamarkuptext}% |
1088 \isamarkuptrue% |
1088 \isamarkuptrue% |
1089 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
1089 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
1090 \ in{\isacharunderscore}interval\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}mlbool{\isachardot}ML{\isachardoublequoteclose}% |
1090 \ in{\isacharunderscore}interval\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}mlbool{\isachardot}ML{\isachardoublequoteclose}% |
1091 \begin{isamarkuptext}% |
1091 \begin{isamarkuptext}% |
1092 \lstsml{Thy/examples/bool_mlbool.ML} |
1092 \lstsml{Thy/examples/bool_mlbool.ML} |
1093 |
1093 |
1094 \noindent This still is not perfect: the parentheses |
1094 \noindent This still is not perfect: the parentheses |
1114 \isadelimtt |
1114 \isadelimtt |
1115 % |
1115 % |
1116 \endisadelimtt |
1116 \endisadelimtt |
1117 \isanewline |
1117 \isanewline |
1118 \isanewline |
1118 \isanewline |
1119 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
1119 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
1120 \ in{\isacharunderscore}interval\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}infix{\isachardot}ML{\isachardoublequoteclose}% |
1120 \ in{\isacharunderscore}interval\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}bool{\isacharunderscore}infix{\isachardot}ML{\isachardoublequoteclose}% |
1121 \begin{isamarkuptext}% |
1121 \begin{isamarkuptext}% |
1122 \lstsml{Thy/examples/bool_infix.ML} |
1122 \lstsml{Thy/examples/bool_infix.ML} |
1123 |
1123 |
1124 \medskip |
1124 \medskip |
1390 \isadelimproof |
1390 \isadelimproof |
1391 % |
1391 % |
1392 \endisadelimproof |
1392 \endisadelimproof |
1393 \isanewline |
1393 \isanewline |
1394 \isanewline |
1394 \isanewline |
1395 \isacommand{code{\isacharunderscore}gen}\isamarkupfalse% |
1395 \isacommand{export{\isacharunderscore}code}\isamarkupfalse% |
1396 \ {\isachardoublequoteopen}{\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\ insert\ {\isachardoublequoteopen}op\ {\isasymin}{\isachardoublequoteclose}\ {\isachardoublequoteopen}op\ {\isasymunion}{\isachardoublequoteclose}\ {\isachardoublequoteopen}Union{\isachardoublequoteclose}\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}set{\isacharunderscore}list{\isachardot}ML{\isachardoublequoteclose}% |
1396 \ {\isachardoublequoteopen}{\isacharbraceleft}{\isacharbraceright}{\isachardoublequoteclose}\ insert\ {\isachardoublequoteopen}op\ {\isasymin}{\isachardoublequoteclose}\ {\isachardoublequoteopen}op\ {\isasymunion}{\isachardoublequoteclose}\ {\isachardoublequoteopen}Union{\isachardoublequoteclose}\ \ \isakeyword{in}\ SML\ \isakeyword{file}\ {\isachardoublequoteopen}examples{\isacharslash}set{\isacharunderscore}list{\isachardot}ML{\isachardoublequoteclose}% |
1397 \begin{isamarkuptext}% |
1397 \begin{isamarkuptext}% |
1398 \lstsml{Thy/examples/set_list.ML} |
1398 \lstsml{Thy/examples/set_list.ML} |
1399 |
1399 |
1400 \medskip |
1400 \medskip |
1444 executable content of the theory changes. |
1444 executable content of the theory changes. |
1445 Implementation of caching is supposed to transparently |
1445 Implementation of caching is supposed to transparently |
1446 hid away the details from the user. Anyway, caching |
1446 hid away the details from the user. Anyway, caching |
1447 reaches the surface by using a slightly more general form |
1447 reaches the surface by using a slightly more general form |
1448 of the \isa{{\isasymCODETHMS}}, \isa{{\isasymCODEDEPS}} |
1448 of the \isa{{\isasymCODETHMS}}, \isa{{\isasymCODEDEPS}} |
1449 and \isa{{\isasymCODEGEN}} commands: the list of constants |
1449 and \isa{{\isasymEXPORTCODE}} commands: the list of constants |
1450 may be omitted. Then, all constants with code theorems |
1450 may be omitted. Then, all constants with code theorems |
1451 in the current cache are referred to.% |
1451 in the current cache are referred to.% |
1452 \end{isamarkuptext}% |
1452 \end{isamarkuptext}% |
1453 \isamarkuptrue% |
1453 \isamarkuptrue% |
1454 % |
1454 % |