appendix-implem-defined.tex 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. % -*- Mode: TeX -*-
  2. %%Implementation-defined Features
  3. \editornote{KMP: I have made no effort to keep this up to date.
  4. When the document is nearly complete, I'll search for
  5. occurrences of ``implementation-defined'' and
  6. ``implementation-dependent'' and bring this up to date.
  7. Don't worry about consistency issues here for now; the main document
  8. takes precedence. But do feel free
  9. to comment on things which are mentioned in the running text
  10. of the main document that are not marked as implementation-defined
  11. but should not be, etc.}
  12. The following sections contain lists of \term{implementation-dependent}
  13. language characteristics.
  14. For more
  15. information about each of these implementation dependencies,
  16. see the dictionary entries for the description of the \term{defined name} being qualified.
  17. \beginsubSection{Values}
  18. %%\item{2.}
  19. \beginlist
  20. \item{1.}
  21. An implementation determines the initial values of the \term{defined names}
  22. in \thenextfigure.
  23. \displaytwo{Implementation-defined values}{
  24. boole-1&boole-nand\cr
  25. boole-2&boole-nor\cr
  26. boole-and&boole-orc1\cr
  27. boole-c1&boole-orc2\cr
  28. boole-c2&boole-set\cr
  29. boole-clr&boole-xor\cr
  30. boole-eqv&\cr
  31. &\cr
  32. *features*&char-code-limit\cr
  33. array-dimension-limit&internal-time-units-per-second\cr
  34. array-rank-limit&lambda-parameters-limit\cr
  35. array-total-size-limit&multiple-values-limit\cr
  36. call-arguments-limit&\cr
  37. &\cr
  38. double-float-negative-epsilon&most-negative-fixnum\cr
  39. least-negative-double-float&most-negative-long-float\cr
  40. least-negative-long-float&most-negative-short-float\cr
  41. least-negative-short-float&most-negative-single-float\cr
  42. least-negative-single-float&most-positive-double-float\cr
  43. least-positive-double-float&most-positive-fixnum\cr
  44. least-positive-long-float&most-positive-long-float\cr
  45. least-positive-short-float&most-positive-short-float\cr
  46. least-positive-single-float&most-positive-single-float\cr
  47. long-float-negative-epsilon&short-float-negative-epsilon\cr
  48. most-negative-double-float&single-float-negative-epsilon\cr
  49. &\cr
  50. *load-verbose*&*random-state*\cr
  51. *print-array*&*read-default-float-format*\cr
  52. *print-pretty*&\cr
  53. }
  54. %%\item{42.}
  55. \item{2.} The implementation determines the defaults for the arguments
  56. to the keywords
  57. \kwd{rehash-size} and
  58. \kwd{rehash-threshold}
  59. for \funref{make-hash-table}.
  60. %%\item{44.}
  61. \item{3.} The implementation determines the way in which a
  62. \term{sequence} is initialized if an \kwd{initial-element}
  63. argument is not supplied. See \funref{make-sequence}.
  64. The implementation determines the way in which a
  65. \term{string} is initialized if an \kwd{initial-element}
  66. argument is not supplied. See \funref{make-string}.
  67. Also, the implementation determines the way in which an
  68. \term{array} is initialized if \kwd{initial-element},
  69. \kwd{initial-contents}, or \kwd{displaced-to}
  70. arguments are not supplied. See \funref{make-array}.
  71. %%\item{58.}
  72. %\item{4.} Valid values for the argument to
  73. %\funref{char-bit} and \funref{set-char-bit}
  74. %are \term{implementation-dependent}.
  75. \endlist
  76. \endsubSection%{Values}
  77. \beginsubSection{Results}
  78. \beginlist
  79. \item{1.}
  80. %%12.5.2 7
  81. An implementation may return the result of the absolute value of
  82. a \term{complex} number composed of \term{integer} real
  83. and imaginary parts as either a \term{float}
  84. or an \term{integer}. See \funref{abs}.
  85. %%\item{7.}
  86. \item{2.}
  87. An implementation determines the result returned from
  88. \funref{lisp-implementation-type},
  89. \funref{type-of},
  90. \funref{lisp-implementation-version}, and \funref{software-version}.
  91. %%\item{18.}
  92. \item{3.} An implementation determines the result of \funref{digit-char}
  93. when more than one character object can encode the supplied weight in
  94. the given radix.
  95. %%\item{20.}
  96. \item{4.} An implementation may determine the consequences in
  97. \macref{do} and
  98. \macref{do*} when the index variable is changed within the iteration
  99. loop.
  100. %%\item{30.}
  101. \item{5.}
  102. The result of \funref{file-position} for a character file
  103. is \term{implementation-dependent}.
  104. %%\item{34.}
  105. \item{6.}
  106. An implementation determines the order of elements in the results
  107. of \funref{intersection}, \funref{set-difference}, and \funref{union}
  108. %!!! derivatives?? gads. maybe make that a glossary word? functions dependent
  109. % on that function, i guess it means. -kmp 3-Jan-91
  110. and derivatives of those functions.
  111. \editornote{KMP: ``derivatives??'' terminology to be worked on.}
  112. Some element-processing aspects of sorting are \term{implementation-dependent}.
  113. See \funref{sort}.
  114. %%\item{36.}
  115. \item{7.}
  116. Whether or not \funref{length} or any sequence operation returns when given
  117. a \term{circular list} is \term{implementation-dependent}.
  118. %%\item{39.}
  119. \item{8.}
  120. The implementation determines the \term{type} of the result of \funref{log}
  121. (\typeref{integer} or \typeref{float}) when its arguments are both
  122. \term{integers} and the result is a whole number.
  123. %%\item{41.}
  124. %\item{9.} The implementation determines the result of \funref{make-char}.
  125. %%\item{46.}
  126. \item{9.} An implementation determines the result of
  127. {\tt (eq (symbol-name (make-symbol x)) x)}.
  128. %%\item{47.}
  129. \item{10.}
  130. An implementation determines the \term{type}
  131. of the result of \funref{max} and \funref{min} in the following cases.
  132. \beginlist
  133. \itemitem{a.}
  134. If the arguments are a mixture of \term{rationals} and \term{floats}
  135. and the largest argument is a \term{rational}.
  136. \itemitem{b.} If the largest argument is a \term{float} number of a smaller format
  137. than the largest format of any \term{float} argument.
  138. \endlist
  139. In addition, if one or more of the arguments are equal, then any one
  140. of them may be chosen as the value to return.
  141. %%\item{62.}
  142. %\issue{SPECIAL-FORM-P-MISNOMER:RENAME}
  143. %\item{12.} \funref{special-operator-p} can return a \term{non-nil} value,
  144. %the identity of which is \term{implementation-dependent}.
  145. %\endissue{SPECIAL-FORM-P-MISNOMER:RENAME}
  146. %%\item{63.}
  147. \item{11.} If the argument to \funref{sqrt} is an \term{integer},
  148. the result may be either an \term{integer} or a \term{float} depending on the
  149. \term{implementation}. Also, if the argument to \funref{sqrt}
  150. is a negative \term{integer}, the result may be either
  151. a \term{complex} with \term{integer} components or
  152. a \term{complex} with \term{float} components.
  153. %%\item{64.}
  154. \item{12.} If no characters in the argument to \funref{string-trim},
  155. \funref{string-left-trim}, \funref{string-right-trim},
  156. \funref{string-upcase}, \funref{string-downcase}, and
  157. \funref{string-capitalize} need to be changed, then the implementation can
  158. either return the argument itself or a copy of it.
  159. This is true for all destructive \term{sequence functions}.
  160. %%\item{71.}
  161. \item{13.} When the arguments to the mathematical \term{functions}
  162. in \thenextfigure\ are all \term{rational} and the true mathematical result
  163. is also (mathematically) rational, then unless otherwise noted
  164. an implementation is free to return either an accurate result \oftype{rational}
  165. or a \term{single float} approximation.
  166. If the arguments are all \term{rational}
  167. but the result cannot be expressed
  168. as a \term{rational} number, then a \term{single float}
  169. approximation is always returned.
  170. \displaythree{Irrational and transcendental functions}{
  171. abs&cis&phase\cr
  172. acos&cos&signum\cr
  173. acosh&cosh&sin\cr
  174. asin&exp&sinh\cr
  175. asinh&expt&sqrt\cr
  176. atan&isqrt&tan\cr
  177. atanh&log&tanh\cr
  178. }
  179. \endlist
  180. \endsubSection%{Results}
  181. \beginsubSection{Data Representation and Typing}
  182. \beginlist
  183. %%\item{5.}
  184. \item{1.}
  185. An implementation determines the representation of a byte specifier.
  186. %%\item{9.}
  187. \item{2.}
  188. Type upgrading may occur when \funref{coerce} is used.
  189. %\Seesection\TypeUpgrading.
  190. %%\item{27.}
  191. \item{3.} An implementation determines the structure of the
  192. \term{environment}
  193. object.
  194. %%\item{75.}
  195. %\item{4.} The existence of
  196. %\term{types} that are not \term{subtypes} of \typeref{common}
  197. %is \term{implementation-dependent}.
  198. \item{4.} Whether or not \thetypes{short-float}, \typeref{long-float},
  199. \typeref{single-float}, and \typeref{double-float} are
  200. \term{disjoint} is \term{implementation-dependent}.
  201. %!!! But subject to certain constraints, no? -kmp 9-May-91
  202. %\Seesection\TypeUpgrading.
  203. \endlist
  204. \endsubSection%{Data Representation and Typing}
  205. \beginsubSection{Program and Control Structure}
  206. \beginlist
  207. %%\item{13.}
  208. %\item{1.}
  209. %An implementation
  210. %might or might not check for any dynamic \term{bindings}
  211. %of the first argument to \macref{defconstant} at the time
  212. %\macref{defconstant} is executed.
  213. %%\item{14.}
  214. \item{1.}
  215. An implementation determines the way that \macref{defmacro}
  216. actually installs a macro function.
  217. %%\item{15.}
  218. \item{2.}
  219. An implementation determines the code generated by \macref{defsetf}.
  220. %%\item{16.}
  221. \item{3.}
  222. The following are \term{implementation-dependent} features of \macref{defstruct}:
  223. \beginlist
  224. \itemitem{a.} The initial contents of a slot, when they have not been provided,
  225. are specified by the implementation.
  226. \itemitem{b.} The \term{access} \term{functions} may be declared \declref{inline}.
  227. \itemitem{c.} The incorrect use of \term{access} \term{functions} might or might not be checked
  228. by an implementation.
  229. \itemitem{d.} %For included slots,
  230. An implementation might or might not enforce the declared \term{type} information
  231. for a slot.
  232. %!!! Is this still true under CLOS?? -kmp 9-May-91
  233. \itemitem{e.} If the \kwd{type} option is not supplied,
  234. the implementation determines the representation of the \term{structure}.
  235. %%(see clean-up issue)
  236. \endlist
  237. %%\item{35.}
  238. \item{4.} The permissibility of non-standard lambda-list
  239. keywords is \term{implementation-dependent}.
  240. %%\item{40.}
  241. \item{5.}
  242. An implementation is free to implement as a \term{special operator}
  243. any \term{operator} described in this standard as a \term{macro},
  244. if an equivalent macro definition is also provided.
  245. See \funref{macro-function}.
  246. %%\item{60.}
  247. \item{6.}
  248. The exact expansion for any particular form given to \macref{setf}
  249. may be \term{implementation-dependent}.
  250. %%\item{76.}
  251. \item{7.} The internal representation of
  252. a backquoted \term{form} is \term{implementation-dependent}.
  253. \endlist
  254. \endsubSection%{Program and Control Structure}
  255. \beginsubSection{Comparisons}
  256. %\beginlist
  257. %%\item{6.}
  258. %\item{1.}
  259. %An implementation determines the way font information is compared in the
  260. %functions \funref{char-equal},
  261. %\funref{char-not-equal}, \funref{char-lessp},
  262. %\funref{char-greaterp},
  263. %\funref{char-not-greaterp}, and \funref{char-not-lessp}. Where not
  264. %specified by this standard, the ordering of
  265. %characters is \term{implementation-dependent}.
  266. %\endlist
  267. \endsubSection%{Comparisons}
  268. \beginsubSection{Numerical Calculations}
  269. \beginlist
  270. %%\item{8.}
  271. \item{1.}
  272. \funref{minusp}, \funref{eql}, \funref{float-sign}, and \funref{zerop}
  273. are affected by the presence of {\tt $-0.0$} in an implementation.
  274. %%\item{24.}
  275. \item{2.}
  276. Whether or not two \term{numbers} or \term{characters}
  277. that are \funref{eql} are \funref{eq} depends on the implementation.
  278. %%%\item{29.}
  279. %\item{3.} An implementation may use different algorithms
  280. %for the cases of a \term{rational} second
  281. %argument and a \term{float}
  282. %second argument to \funref{expt}.
  283. %%\item{55.}
  284. \item{3.} Random number generation is \term{implementation-dependent}.
  285. %%\item{70.}
  286. \item{4.} For the \term{operators} in \thenextfigure,
  287. an implementation may process the arguments in any manner consistent
  288. with associative (and possibly commutative) rearrangement.
  289. \displaythree{Mathematically associative operators}{
  290. *&boole&lognand\cr
  291. +&gcd&lognor\cr
  292. /=&lcm&logorc1\cr
  293. <&logand&logorc2\cr
  294. <=&logandc1&logxor\cr
  295. =&logandc2&max\cr
  296. >&logeqv&min\cr
  297. >=&logior&\cr
  298. }
  299. Implementations may differ in
  300. which automatic coercions are applied because of differing
  301. orders of argument processing.
  302. %%\item{72.}
  303. \item{5.}
  304. The precise definitions of \typeref{short-float},
  305. \typeref{long-float}, \typeref{single-float}, and
  306. \typeref{double-float} are \term{implementation-dependent}
  307. (but subject to certain constraints imposed by this specification).
  308. \endlist
  309. \endsubSection%{Numerical Calculations}
  310. \beginsubSection{User Interface}
  311. \beginlist
  312. %%\item{.}
  313. \item{1.}
  314. \Thenextfigure\ shows the names of \term{operators} which have
  315. an \term{implementation-dependent} user interface.
  316. \displaythree{Operators with Implementation-Dependent User Interfaces}{
  317. break&ctypecase&step\cr
  318. ccase&describe&warn\cr
  319. ccase&disassemble&y-or-n-p\cr
  320. cerror&error&yes-or-no-p\cr
  321. check-type&inspect&\cr
  322. }
  323. %I removed "Anything that uses CERROR" as unnecessary. In general you don't
  324. %know what really uses CERROR and what doesn't anyway. -kmp 13-Feb-91
  325. \endlist
  326. \endsubSection%{User Interface}
  327. \beginsubSection{Input/Output}
  328. \beginlist
  329. %%\item{17.}
  330. \item{1.} An implementation determines whether an attempt by
  331. \funref{delete-file} to delete a non-existent file is considered to be successful.
  332. %%\item{19.}
  333. \item{2.} An implementation may define keywords to be used with
  334. \funref{directory}.
  335. %%\item{31.}
  336. \item{3.} An implementation determines the precise actions of
  337. \funref{finish-output}, \funref{clear-output}, and
  338. \funref{force-output}.
  339. %%\item{31a.}
  340. \item{4.} \term{Streams}
  341. may be implemented in an asynchronous or buffered manner.
  342. %%\item{32.}
  343. \item{5.} \funref{format} has the following \term{implementation-defined}
  344. features:
  345. \beginlist
  346. %% CLean-up item on this
  347. \itemitem{a.} \f{~C} prints a character in an \term{implementation-dependent}
  348. abbreviated format.
  349. \itemitem{b.} The precise output for \f{~:@C} depends
  350. on the implementation.
  351. \itemitem{c.} When rounding up and rounding down would produce printed values
  352. equidistant from the scaled value of the argument, then the implementation
  353. is free to use either one.
  354. \itemitem{d.} For the \f{~\$} operation, if the magnitude of the argument is so large or small
  355. that more than 100 digits would have to
  356. be printed, then an implementation is free, at its discretion, to print
  357. the number using exponential notation.
  358. \itemitem{e.} For the \f{~\$} operation, if
  359. the argument is a \term{rational} number,
  360. then it is coerced to be a \term{single float}
  361. or processed by any other method that has essentially the
  362. same behavior.
  363. Only a finite number of digits may be printed.
  364. \itemitem{f.} The range of numbers and the font of the printed output
  365. for the \f{~R} operation are \term{implementation-dependent}.
  366. The English words printed as a result of the \f{~R} operation are
  367. \term{implementation-dependent}.
  368. \endlist
  369. %%\item{37.}
  370. \item{6.} The means by which a text (character file)
  371. is distinguished from an object (binary) file by \funref{load} is
  372. \term{implementation-dependent}.
  373. %%\item{38.}
  374. \item{7.} The selection by \funref{load} of a file type when there
  375. is a choice is \term{implementation-dependent}.
  376. %%\item{43.}
  377. \item{8.} The implementation determines the internal representation
  378. of a \term{pathname}. See \funref{make-pathname}.
  379. %%\item{48.}
  380. \item{9.} The following aspects of \funref{open}
  381. are \term{implementation-dependent}:
  382. \beginlist
  383. \itemitem{a.} The meaning of the keyword \kwd{supersede}.
  384. %\itemitem{b.} An implementation is required to recognize all of
  385. %the following \kwd{if-exists} keywords
  386. %and to do something reasonable in the context of the host operating
  387. %system:
  388. %\kwd{error},
  389. %\kwd{new-version},
  390. %\kwd{rename},
  391. %\kwd{rename-and-delete},
  392. %\kwd{overwrite},
  393. %\kwd{append},
  394. %\kwd{supersede}, or
  395. %\nil.
  396. \itemitem{b.} If it is impossible for an implementation to handle some option
  397. in a manner close to what is specified in this manual, an error may be
  398. signaled.
  399. \endlist
  400. %%\item{50.}
  401. \item{10.} \funref{parse-namestring}
  402. might or might not signal an error if
  403. the representation of a \term{pathname}
  404. is surrounded on either side by
  405. \term{whitespace}\meaning{1} characters, depending on the \term{implementation}.
  406. Whether or not \funref{parse-namestring} supplies
  407. the
  408. standard default device as the device component
  409. of the resulting \term{pathname} depends on the implementation.
  410. %%\item{51.}
  411. \item{11.} The \term{pathname} namestring
  412. syntax is \term{implementation-dependent}.
  413. The printed representation of a pathname
  414. typically designates \kwd{wild} by an asterisk; however, this is
  415. \term{implementation-dependent}.
  416. %%\item{52.}
  417. \item{12.} A \term{character} name or a \term{pathname} that is printed
  418. is acceptable as input in only the implementation which typed it.
  419. Which names for characters are chosen to print is
  420. \term{implementation-dependent}, although standard names are
  421. chosen over non-standard names. See \funref{write}.
  422. %%\item{53.}
  423. %\item{13.} The printed representation of a
  424. %\term{random state} \term{object} is \term{implementation-dependent}.
  425. %%\item{54.}
  426. \item{13.} \term{Objects} which do not have a specific syntax
  427. specified in this manual are printed in an \term{implementation-dependent} manner.
  428. %%\item{68.}
  429. \item{14.} The \param{host} argument to \funref{user-homedir-pathname}
  430. defaults in an \term{implementation-dependent} manner.
  431. %% Following two are affected by the character set proposal.
  432. %%\item{77.}
  433. \item{15.} Whether the following
  434. character names are supported is \term{implementation-dependent}:
  435. \f{rubout}, \f{page}, \f{tab}, \f{backspace}, \f{return}, and \f{linefeed}.
  436. %%\item{78.}
  437. %\item{17.} Whether
  438. %characters with non-zero \param{bits} and \param{font} \term{attributes}
  439. %syntax
  440. %descriptions are in the \term{readtable} is \term{implementation-dependent}.
  441. \endlist
  442. \endsubSection%{Input/Output}
  443. \beginsubSection{Compiling}
  444. \beginlist
  445. %%\item{10.}
  446. \item{1.}
  447. An implementation determines the following for \funref{compile-file}:
  448. \beginlist
  449. \itemitem{a.} The contents of the file created by \funref{compile-file}.
  450. \itemitem{b.} The file
  451. specification (if one is not supplied)
  452. for the file created by \funref{compile-file}.
  453. \endlist
  454. %%\item{12.}
  455. \item{2.}
  456. An implementation's compiler can ignore declaration specifiers
  457. except for \declref{declaration}, \declref{special}, and \declref{notinline}.
  458. %%\item{25.}
  459. \item{3.} An implementation may coalesce constants or portions of constants
  460. in code to be compiled if they appear to be \funref{eq}
  461. or \funref{eql} and are \funref{equal}.
  462. \Seesection\Compilation.
  463. \endlist
  464. \endsubSection%{Compiling}
  465. \beginsubSection{Miscellaneous}
  466. \beginlist
  467. %%\item{4.}
  468. \item{1.}
  469. An implementation determines the specifics of the
  470. debugger that \funref{break} enters.
  471. %%\item{74.}
  472. \item{2.} Although functions that manipulate \term{packages}
  473. generally signal
  474. name conflict errors before making any change to the package structure, an
  475. implementation may \funref{export}
  476. each of a given list of \term{symbols} separately.
  477. %%\item{49.}
  478. %\item{3.} The contents of \thepackage{system} are determined by
  479. %the implementation.
  480. %%\item{57.}
  481. \item{3.}
  482. The frequency of execution of \param{test} and \param{key}
  483. functions for all \term{sequence functions} is \term{implementation-dependent}.
  484. The implementation of \funref{search} may choose to search the \term{sequence}
  485. in any order.
  486. \reviewer{Is the order of other things specified??}
  487. %%\item{65.}
  488. \item{4.} The manner in which a
  489. hash code is computed by \funref{sxhash}
  490. is \term{implementation-dependent}.
  491. %% clean-up pending for this
  492. %%\item{69.}
  493. \item{5.} The optional argument \param{extension}
  494. for \funref{vector-push-extend}
  495. defaults to a ``reasonable'' \term{implementation-dependent}
  496. value.
  497. %%\item{73.}
  498. \item{6.} A \term{symbol}'s \term{property list} may have defined components.
  499. %%\item{11.}
  500. \item{7.}
  501. An implementation can define declaration specifiers other than the ones
  502. given in the description of \misc{declare}.
  503. \endlist
  504. \endsubSection%{Miscellaneous}
  505. \beginsubSection{Programming Environment}
  506. \beginlist
  507. %%\item{22.}
  508. \item{1.} An implementation might or might not provide a resident editor.
  509. See \funref{ed}.
  510. %%\item{23.}
  511. \item{2.} An implementation determines the means by which
  512. function text is obtained when \f{(ed \i{symbol})} is invoked.
  513. %%\item{33.}
  514. \item{3.} An implementation determines the units used in representing
  515. Internal Time.
  516. See \funref{get-internal-run-time}.
  517. %%\item{56.}
  518. \item{4.} The information \funref{room} prints is
  519. \term{implementation-dependent}.
  520. %%\item{66.}
  521. \item{5.} The nature and
  522. format of the information printed by \funref{time}
  523. is \term{implementation-dependent}.
  524. %%\item{67.}
  525. \item{6.} The following are implementation dependencies of
  526. tracing.
  527. \beginlist
  528. \itemitem{a.} \macref{trace} and \macref{untrace} may accept
  529. \term{implementation-dependent} argument formats.
  530. \itemitem{b.} The format of the \macref{trace}
  531. output is \term{implementation-dependent}.
  532. \endlist
  533. \endlist
  534. \endsubSection%{Programming Environment}