123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634 |
- % -*- Mode: TeX -*-
- %%Implementation-defined Features
- \editornote{KMP: I have made no effort to keep this up to date.
- When the document is nearly complete, I'll search for
- occurrences of ``implementation-defined'' and
- ``implementation-dependent'' and bring this up to date.
- Don't worry about consistency issues here for now; the main document
- takes precedence. But do feel free
- to comment on things which are mentioned in the running text
- of the main document that are not marked as implementation-defined
- but should not be, etc.}
- The following sections contain lists of \term{implementation-dependent}
- language characteristics.
- For more
- information about each of these implementation dependencies,
- see the dictionary entries for the description of the \term{defined name} being qualified.
- \beginsubSection{Values}
- %%\item{2.}
- \beginlist
- \item{1.}
- An implementation determines the initial values of the \term{defined names}
- in \thenextfigure.
- \displaytwo{Implementation-defined values}{
- boole-1&boole-nand\cr
- boole-2&boole-nor\cr
- boole-and&boole-orc1\cr
- boole-c1&boole-orc2\cr
- boole-c2&boole-set\cr
- boole-clr&boole-xor\cr
- boole-eqv&\cr
- &\cr
- *features*&char-code-limit\cr
- array-dimension-limit&internal-time-units-per-second\cr
- array-rank-limit&lambda-parameters-limit\cr
- array-total-size-limit&multiple-values-limit\cr
- call-arguments-limit&\cr
- &\cr
- double-float-negative-epsilon&most-negative-fixnum\cr
- least-negative-double-float&most-negative-long-float\cr
- least-negative-long-float&most-negative-short-float\cr
- least-negative-short-float&most-negative-single-float\cr
- least-negative-single-float&most-positive-double-float\cr
- least-positive-double-float&most-positive-fixnum\cr
- least-positive-long-float&most-positive-long-float\cr
- least-positive-short-float&most-positive-short-float\cr
- least-positive-single-float&most-positive-single-float\cr
- long-float-negative-epsilon&short-float-negative-epsilon\cr
- most-negative-double-float&single-float-negative-epsilon\cr
- &\cr
- *load-verbose*&*random-state*\cr
- *print-array*&*read-default-float-format*\cr
- *print-pretty*&\cr
- }
-
- %%\item{42.}
- \item{2.} The implementation determines the defaults for the arguments
- to the keywords
- \kwd{rehash-size} and
- \kwd{rehash-threshold}
- for \funref{make-hash-table}.
- %%\item{44.}
- \item{3.} The implementation determines the way in which a
- \term{sequence} is initialized if an \kwd{initial-element}
- argument is not supplied. See \funref{make-sequence}.
- The implementation determines the way in which a
- \term{string} is initialized if an \kwd{initial-element}
- argument is not supplied. See \funref{make-string}.
- Also, the implementation determines the way in which an
- \term{array} is initialized if \kwd{initial-element},
- \kwd{initial-contents}, or \kwd{displaced-to}
- arguments are not supplied. See \funref{make-array}.
- %%\item{58.}
- %\item{4.} Valid values for the argument to
- %\funref{char-bit} and \funref{set-char-bit}
- %are \term{implementation-dependent}.
- \endlist
- \endsubSection%{Values}
- \beginsubSection{Results}
- \beginlist
- \item{1.}
- %%12.5.2 7
- An implementation may return the result of the absolute value of
- a \term{complex} number composed of \term{integer} real
- and imaginary parts as either a \term{float}
- or an \term{integer}. See \funref{abs}.
- %%\item{7.}
- \item{2.}
- An implementation determines the result returned from
- \funref{lisp-implementation-type},
- \funref{type-of},
- \funref{lisp-implementation-version}, and \funref{software-version}.
- %%\item{18.}
- \item{3.} An implementation determines the result of \funref{digit-char}
- when more than one character object can encode the supplied weight in
- the given radix.
- %%\item{20.}
- \item{4.} An implementation may determine the consequences in
- \macref{do} and
- \macref{do*} when the index variable is changed within the iteration
- loop.
- %%\item{30.}
- \item{5.}
- The result of \funref{file-position} for a character file
- is \term{implementation-dependent}.
- %%\item{34.}
- \item{6.}
- An implementation determines the order of elements in the results
- of \funref{intersection}, \funref{set-difference}, and \funref{union}
- %!!! derivatives?? gads. maybe make that a glossary word? functions dependent
- % on that function, i guess it means. -kmp 3-Jan-91
- and derivatives of those functions.
- \editornote{KMP: ``derivatives??'' terminology to be worked on.}
- Some element-processing aspects of sorting are \term{implementation-dependent}.
- See \funref{sort}.
- %%\item{36.}
- \item{7.}
- Whether or not \funref{length} or any sequence operation returns when given
- a \term{circular list} is \term{implementation-dependent}.
- %%\item{39.}
- \item{8.}
- The implementation determines the \term{type} of the result of \funref{log}
- (\typeref{integer} or \typeref{float}) when its arguments are both
- \term{integers} and the result is a whole number.
-
- %%\item{41.}
- %\item{9.} The implementation determines the result of \funref{make-char}.
- %%\item{46.}
- \item{9.} An implementation determines the result of
- {\tt (eq (symbol-name (make-symbol x)) x)}.
-
- %%\item{47.}
- \item{10.}
- An implementation determines the \term{type}
- of the result of \funref{max} and \funref{min} in the following cases.
- \beginlist
- \itemitem{a.}
- If the arguments are a mixture of \term{rationals} and \term{floats}
- and the largest argument is a \term{rational}.
- \itemitem{b.} If the largest argument is a \term{float} number of a smaller format
- than the largest format of any \term{float} argument.
- \endlist
- In addition, if one or more of the arguments are equal, then any one
- of them may be chosen as the value to return.
- %%\item{62.}
- %\issue{SPECIAL-FORM-P-MISNOMER:RENAME}
- %\item{12.} \funref{special-operator-p} can return a \term{non-nil} value,
- %the identity of which is \term{implementation-dependent}.
- %\endissue{SPECIAL-FORM-P-MISNOMER:RENAME}
- %%\item{63.}
- \item{11.} If the argument to \funref{sqrt} is an \term{integer},
- the result may be either an \term{integer} or a \term{float} depending on the
- \term{implementation}. Also, if the argument to \funref{sqrt}
- is a negative \term{integer}, the result may be either
- a \term{complex} with \term{integer} components or
- a \term{complex} with \term{float} components.
- %%\item{64.}
- \item{12.} If no characters in the argument to \funref{string-trim},
- \funref{string-left-trim}, \funref{string-right-trim},
- \funref{string-upcase}, \funref{string-downcase}, and
- \funref{string-capitalize} need to be changed, then the implementation can
- either return the argument itself or a copy of it.
- This is true for all destructive \term{sequence functions}.
- %%\item{71.}
- \item{13.} When the arguments to the mathematical \term{functions}
- in \thenextfigure\ are all \term{rational} and the true mathematical result
- is also (mathematically) rational, then unless otherwise noted
- an implementation is free to return either an accurate result \oftype{rational}
- or a \term{single float} approximation.
- If the arguments are all \term{rational}
- but the result cannot be expressed
- as a \term{rational} number, then a \term{single float}
- approximation is always returned.
- \displaythree{Irrational and transcendental functions}{
- abs&cis&phase\cr
- acos&cos&signum\cr
- acosh&cosh&sin\cr
- asin&exp&sinh\cr
- asinh&expt&sqrt\cr
- atan&isqrt&tan\cr
- atanh&log&tanh\cr
- }
- \endlist
- \endsubSection%{Results}
- \beginsubSection{Data Representation and Typing}
- \beginlist
- %%\item{5.}
- \item{1.}
- An implementation determines the representation of a byte specifier.
- %%\item{9.}
- \item{2.}
- Type upgrading may occur when \funref{coerce} is used.
- %\Seesection\TypeUpgrading.
- %%\item{27.}
- \item{3.} An implementation determines the structure of the
- \term{environment}
- object.
- %%\item{75.}
- %\item{4.} The existence of
- %\term{types} that are not \term{subtypes} of \typeref{common}
- %is \term{implementation-dependent}.
- \item{4.} Whether or not \thetypes{short-float}, \typeref{long-float},
- \typeref{single-float}, and \typeref{double-float} are
- \term{disjoint} is \term{implementation-dependent}.
- %!!! But subject to certain constraints, no? -kmp 9-May-91
- %\Seesection\TypeUpgrading.
- \endlist
- \endsubSection%{Data Representation and Typing}
- \beginsubSection{Program and Control Structure}
- \beginlist
- %%\item{13.}
- %\item{1.}
- %An implementation
- %might or might not check for any dynamic \term{bindings}
- %of the first argument to \macref{defconstant} at the time
- %\macref{defconstant} is executed.
- %%\item{14.}
- \item{1.}
- An implementation determines the way that \macref{defmacro}
- actually installs a macro function.
- %%\item{15.}
- \item{2.}
- An implementation determines the code generated by \macref{defsetf}.
- %%\item{16.}
- \item{3.}
- The following are \term{implementation-dependent} features of \macref{defstruct}:
- \beginlist
- \itemitem{a.} The initial contents of a slot, when they have not been provided,
- are specified by the implementation.
- \itemitem{b.} The \term{access} \term{functions} may be declared \declref{inline}.
- \itemitem{c.} The incorrect use of \term{access} \term{functions} might or might not be checked
- by an implementation.
- \itemitem{d.} %For included slots,
- An implementation might or might not enforce the declared \term{type} information
- for a slot.
- %!!! Is this still true under CLOS?? -kmp 9-May-91
- \itemitem{e.} If the \kwd{type} option is not supplied,
- the implementation determines the representation of the \term{structure}.
- %%(see clean-up issue)
- \endlist
- %%\item{35.}
- \item{4.} The permissibility of non-standard lambda-list
- keywords is \term{implementation-dependent}.
- %%\item{40.}
- \item{5.}
- An implementation is free to implement as a \term{special operator}
- any \term{operator} described in this standard as a \term{macro},
- if an equivalent macro definition is also provided.
- See \funref{macro-function}.
- %%\item{60.}
- \item{6.}
- The exact expansion for any particular form given to \macref{setf}
- may be \term{implementation-dependent}.
- %%\item{76.}
- \item{7.} The internal representation of
- a backquoted \term{form} is \term{implementation-dependent}.
- \endlist
- \endsubSection%{Program and Control Structure}
- \beginsubSection{Comparisons}
- %\beginlist
- %%\item{6.}
- %\item{1.}
- %An implementation determines the way font information is compared in the
- %functions \funref{char-equal},
- %\funref{char-not-equal}, \funref{char-lessp},
- %\funref{char-greaterp},
- %\funref{char-not-greaterp}, and \funref{char-not-lessp}. Where not
- %specified by this standard, the ordering of
- %characters is \term{implementation-dependent}.
- %\endlist
- \endsubSection%{Comparisons}
- \beginsubSection{Numerical Calculations}
- \beginlist
- %%\item{8.}
- \item{1.}
- \funref{minusp}, \funref{eql}, \funref{float-sign}, and \funref{zerop}
- are affected by the presence of {\tt $-0.0$} in an implementation.
- %%\item{24.}
- \item{2.}
- Whether or not two \term{numbers} or \term{characters}
- that are \funref{eql} are \funref{eq} depends on the implementation.
- %%%\item{29.}
- %\item{3.} An implementation may use different algorithms
- %for the cases of a \term{rational} second
- %argument and a \term{float}
- %second argument to \funref{expt}.
- %%\item{55.}
- \item{3.} Random number generation is \term{implementation-dependent}.
- %%\item{70.}
- \item{4.} For the \term{operators} in \thenextfigure,
- an implementation may process the arguments in any manner consistent
- with associative (and possibly commutative) rearrangement.
- \displaythree{Mathematically associative operators}{
- *&boole&lognand\cr
- +&gcd&lognor\cr
- /=&lcm&logorc1\cr
- <&logand&logorc2\cr
- <=&logandc1&logxor\cr
- =&logandc2&max\cr
- >&logeqv&min\cr
- >=&logior&\cr
- }
- Implementations may differ in
- which automatic coercions are applied because of differing
- orders of argument processing.
- %%\item{72.}
- \item{5.}
- The precise definitions of \typeref{short-float},
- \typeref{long-float}, \typeref{single-float}, and
- \typeref{double-float} are \term{implementation-dependent}
- (but subject to certain constraints imposed by this specification).
- \endlist
- \endsubSection%{Numerical Calculations}
- \beginsubSection{User Interface}
- \beginlist
- %%\item{.}
- \item{1.}
- \Thenextfigure\ shows the names of \term{operators} which have
- an \term{implementation-dependent} user interface.
- \displaythree{Operators with Implementation-Dependent User Interfaces}{
- break&ctypecase&step\cr
- ccase&describe&warn\cr
- ccase&disassemble&y-or-n-p\cr
- cerror&error&yes-or-no-p\cr
- check-type&inspect&\cr
- }
- %I removed "Anything that uses CERROR" as unnecessary. In general you don't
- %know what really uses CERROR and what doesn't anyway. -kmp 13-Feb-91
- \endlist
- \endsubSection%{User Interface}
- \beginsubSection{Input/Output}
- \beginlist
- %%\item{17.}
- \item{1.} An implementation determines whether an attempt by
- \funref{delete-file} to delete a non-existent file is considered to be successful.
- %%\item{19.}
- \item{2.} An implementation may define keywords to be used with
- \funref{directory}.
- %%\item{31.}
- \item{3.} An implementation determines the precise actions of
- \funref{finish-output}, \funref{clear-output}, and
- \funref{force-output}.
- %%\item{31a.}
- \item{4.} \term{Streams}
- may be implemented in an asynchronous or buffered manner.
- %%\item{32.}
- \item{5.} \funref{format} has the following \term{implementation-defined}
- features:
- \beginlist
- %% CLean-up item on this
- \itemitem{a.} \f{~C} prints a character in an \term{implementation-dependent}
- abbreviated format.
- \itemitem{b.} The precise output for \f{~:@C} depends
- on the implementation.
- \itemitem{c.} When rounding up and rounding down would produce printed values
- equidistant from the scaled value of the argument, then the implementation
- is free to use either one.
- \itemitem{d.} For the \f{~\$} operation, if the magnitude of the argument is so large or small
- that more than 100 digits would have to
- be printed, then an implementation is free, at its discretion, to print
- the number using exponential notation.
- \itemitem{e.} For the \f{~\$} operation, if
- the argument is a \term{rational} number,
- then it is coerced to be a \term{single float}
- or processed by any other method that has essentially the
- same behavior.
- Only a finite number of digits may be printed.
- \itemitem{f.} The range of numbers and the font of the printed output
- for the \f{~R} operation are \term{implementation-dependent}.
- The English words printed as a result of the \f{~R} operation are
- \term{implementation-dependent}.
- \endlist
- %%\item{37.}
- \item{6.} The means by which a text (character file)
- is distinguished from an object (binary) file by \funref{load} is
- \term{implementation-dependent}.
- %%\item{38.}
- \item{7.} The selection by \funref{load} of a file type when there
- is a choice is \term{implementation-dependent}.
- %%\item{43.}
- \item{8.} The implementation determines the internal representation
- of a \term{pathname}. See \funref{make-pathname}.
- %%\item{48.}
- \item{9.} The following aspects of \funref{open}
- are \term{implementation-dependent}:
- \beginlist
- \itemitem{a.} The meaning of the keyword \kwd{supersede}.
- %\itemitem{b.} An implementation is required to recognize all of
- %the following \kwd{if-exists} keywords
- %and to do something reasonable in the context of the host operating
- %system:
- %\kwd{error},
- %\kwd{new-version},
- %\kwd{rename},
- %\kwd{rename-and-delete},
- %\kwd{overwrite},
- %\kwd{append},
- %\kwd{supersede}, or
- %\nil.
- \itemitem{b.} If it is impossible for an implementation to handle some option
- in a manner close to what is specified in this manual, an error may be
- signaled.
- \endlist
- %%\item{50.}
- \item{10.} \funref{parse-namestring}
- might or might not signal an error if
- the representation of a \term{pathname}
- is surrounded on either side by
- \term{whitespace}\meaning{1} characters, depending on the \term{implementation}.
- Whether or not \funref{parse-namestring} supplies
- the
- standard default device as the device component
- of the resulting \term{pathname} depends on the implementation.
- %%\item{51.}
- \item{11.} The \term{pathname} namestring
- syntax is \term{implementation-dependent}.
- The printed representation of a pathname
- typically designates \kwd{wild} by an asterisk; however, this is
- \term{implementation-dependent}.
- %%\item{52.}
- \item{12.} A \term{character} name or a \term{pathname} that is printed
- is acceptable as input in only the implementation which typed it.
- Which names for characters are chosen to print is
- \term{implementation-dependent}, although standard names are
- chosen over non-standard names. See \funref{write}.
-
- %%\item{53.}
- %\item{13.} The printed representation of a
- %\term{random state} \term{object} is \term{implementation-dependent}.
- %%\item{54.}
- \item{13.} \term{Objects} which do not have a specific syntax
- specified in this manual are printed in an \term{implementation-dependent} manner.
- %%\item{68.}
- \item{14.} The \param{host} argument to \funref{user-homedir-pathname}
- defaults in an \term{implementation-dependent} manner.
- %% Following two are affected by the character set proposal.
- %%\item{77.}
- \item{15.} Whether the following
- character names are supported is \term{implementation-dependent}:
- \f{rubout}, \f{page}, \f{tab}, \f{backspace}, \f{return}, and \f{linefeed}.
- %%\item{78.}
- %\item{17.} Whether
- %characters with non-zero \param{bits} and \param{font} \term{attributes}
- %syntax
- %descriptions are in the \term{readtable} is \term{implementation-dependent}.
- \endlist
- \endsubSection%{Input/Output}
-
- \beginsubSection{Compiling}
- \beginlist
- %%\item{10.}
- \item{1.}
- An implementation determines the following for \funref{compile-file}:
- \beginlist
- \itemitem{a.} The contents of the file created by \funref{compile-file}.
- \itemitem{b.} The file
- specification (if one is not supplied)
- for the file created by \funref{compile-file}.
- \endlist
- %%\item{12.}
- \item{2.}
- An implementation's compiler can ignore declaration specifiers
- except for \declref{declaration}, \declref{special}, and \declref{notinline}.
- %%\item{25.}
- \item{3.} An implementation may coalesce constants or portions of constants
- in code to be compiled if they appear to be \funref{eq}
- or \funref{eql} and are \funref{equal}.
- \Seesection\Compilation.
- \endlist
- \endsubSection%{Compiling}
- \beginsubSection{Miscellaneous}
- \beginlist
- %%\item{4.}
- \item{1.}
- An implementation determines the specifics of the
- debugger that \funref{break} enters.
- %%\item{74.}
- \item{2.} Although functions that manipulate \term{packages}
- generally signal
- name conflict errors before making any change to the package structure, an
- implementation may \funref{export}
- each of a given list of \term{symbols} separately.
- %%\item{49.}
- %\item{3.} The contents of \thepackage{system} are determined by
- %the implementation.
- %%\item{57.}
- \item{3.}
- The frequency of execution of \param{test} and \param{key}
- functions for all \term{sequence functions} is \term{implementation-dependent}.
- The implementation of \funref{search} may choose to search the \term{sequence}
- in any order.
- \reviewer{Is the order of other things specified??}
- %%\item{65.}
- \item{4.} The manner in which a
- hash code is computed by \funref{sxhash}
- is \term{implementation-dependent}.
- %% clean-up pending for this
- %%\item{69.}
- \item{5.} The optional argument \param{extension}
- for \funref{vector-push-extend}
- defaults to a ``reasonable'' \term{implementation-dependent}
- value.
- %%\item{73.}
- \item{6.} A \term{symbol}'s \term{property list} may have defined components.
- %%\item{11.}
- \item{7.}
- An implementation can define declaration specifiers other than the ones
- given in the description of \misc{declare}.
- \endlist
- \endsubSection%{Miscellaneous}
- \beginsubSection{Programming Environment}
- \beginlist
- %%\item{22.}
- \item{1.} An implementation might or might not provide a resident editor.
- See \funref{ed}.
- %%\item{23.}
- \item{2.} An implementation determines the means by which
- function text is obtained when \f{(ed \i{symbol})} is invoked.
- %%\item{33.}
- \item{3.} An implementation determines the units used in representing
- Internal Time.
- See \funref{get-internal-run-time}.
- %%\item{56.}
- \item{4.} The information \funref{room} prints is
- \term{implementation-dependent}.
- %%\item{66.}
- \item{5.} The nature and
- format of the information printed by \funref{time}
- is \term{implementation-dependent}.
-
- %%\item{67.}
- \item{6.} The following are implementation dependencies of
- tracing.
- \beginlist
- \itemitem{a.} \macref{trace} and \macref{untrace} may accept
- \term{implementation-dependent} argument formats.
- \itemitem{b.} The format of the \macref{trace}
- output is \term{implementation-dependent}.
- \endlist
- \endlist
- \endsubSection%{Programming Environment}
|