src/Doc/Implementation/ML.thy
changeset 75619 9639c3867b86
parent 75617 be89ec4a4523
child 76987 4c275405faae
equal deleted inserted replaced
75618:85a7795675be 75619:9639c3867b86
  1392 
  1392 
  1393   Note that Isabelle/ML string literals may refer Isabelle symbols like
  1393   Note that Isabelle/ML string literals may refer Isabelle symbols like
  1394   ``\<^verbatim>\<open>\<alpha>\<close>'' natively, \<^emph>\<open>without\<close> escaping the backslash. This is a consequence
  1394   ``\<^verbatim>\<open>\<alpha>\<close>'' natively, \<^emph>\<open>without\<close> escaping the backslash. This is a consequence
  1395   of Isabelle treating all source text as strings of symbols, instead of raw
  1395   of Isabelle treating all source text as strings of symbols, instead of raw
  1396   characters.
  1396   characters.
       
  1397 
       
  1398 
       
  1399   \begin{warn}
       
  1400   The regular \<^verbatim>\<open>64_32\<close> platform of Poly/ML has a size limit of 64\,MB for
       
  1401   \<^ML_type>\<open>string\<close> values. This is usually sufficient for text
       
  1402   applications, with a little bit of YXML markup. Very large XML trees or
       
  1403   binary blobs are better stored as scalable byte strings, see type
       
  1404   \<^ML_type>\<open>Bytes.T\<close> and corresponding operations in
       
  1405   \<^file>\<open>~~/src/Pure/General/bytes.ML\<close>.
       
  1406   \end{warn}
  1397 \<close>
  1407 \<close>
  1398 
  1408 
  1399 text %mlex \<open>
  1409 text %mlex \<open>
  1400   The subsequent example illustrates the difference of physical addressing of
  1410   The subsequent example illustrates the difference of physical addressing of
  1401   bytes versus logical addressing of symbols in Isabelle strings.
  1411   bytes versus logical addressing of symbols in Isabelle strings.
  1426   \end{mldecls}
  1436   \end{mldecls}
  1427 
  1437 
  1428   \<^descr> Type \<^ML_type>\<open>int\<close> represents regular mathematical integers, which are
  1438   \<^descr> Type \<^ML_type>\<open>int\<close> represents regular mathematical integers, which are
  1429   \<^emph>\<open>unbounded\<close>. Overflow is treated properly, but should never happen in
  1439   \<^emph>\<open>unbounded\<close>. Overflow is treated properly, but should never happen in
  1430   practice.\<^footnote>\<open>The size limit for integer bit patterns in memory is 64\,MB for
  1440   practice.\<^footnote>\<open>The size limit for integer bit patterns in memory is 64\,MB for
  1431   32-bit Poly/ML, and much higher for 64-bit systems.\<close>
  1441   the regular \<^verbatim>\<open>64_32\<close> platform, and much higher for native \<^verbatim>\<open>64\<close>
       
  1442   architecture.\<close>
  1432 
  1443 
  1433   Structure \<^ML_structure>\<open>IntInf\<close> of SML97 is obsolete and superseded by
  1444   Structure \<^ML_structure>\<open>IntInf\<close> of SML97 is obsolete and superseded by
  1434   \<^ML_structure>\<open>Int\<close>. Structure \<^ML_structure>\<open>Integer\<close> in
  1445   \<^ML_structure>\<open>Int\<close>. Structure \<^ML_structure>\<open>Integer\<close> in
  1435   \<^file>\<open>~~/src/Pure/General/integer.ML\<close> provides some additional operations.
  1446   \<^file>\<open>~~/src/Pure/General/integer.ML\<close> provides some additional operations.
  1436 \<close>
  1447 \<close>