X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fintro.texinfo;h=f494e19f5df5cf1ff847bcb8d1a9975d673f70f0;hb=a129450e9b56cee8e307fc5c320105fe00ba45b7;hp=4f3182ba4cc69aa6415eba55085417d05b0c8fea;hpb=74cfbf6d0572b7df1b3492563408a7cb3ae103cf;p=sbcl.git diff --git a/doc/manual/intro.texinfo b/doc/manual/intro.texinfo index 4f3182b..f494e19 100644 --- a/doc/manual/intro.texinfo +++ b/doc/manual/intro.texinfo @@ -8,13 +8,13 @@ not on behavior which is common to all implementations of ANSI Common Lisp. @menu -* ANSI Conformance:: -* Extensions:: -* Idiosyncrasies:: -* Development Tools:: -* More SBCL Information:: -* More Common Lisp Information:: -* History and Implementation of SBCL:: +* ANSI Conformance:: +* Extensions:: +* Idiosyncrasies:: +* Development Tools:: +* More SBCL Information:: +* More Common Lisp Information:: +* History and Implementation of SBCL:: @end menu @@ -65,6 +65,10 @@ non-blocking IO on multiple streams without using threads. @code{sb-mop} package provides a metaobject protocol for the Common Lisp Object System as described in @cite{Art of Metaobject Protocol}. +@item Extensible Sequences +SBCL allows users to define subclasses of the @code{sequence} +class. @xref{Extensible Sequences}. + @item Native Threads SBCL has native threads on x86/Linux, capable of taking advantage of SMP on multiprocessor machines. @xref{Threading}. @@ -108,7 +112,7 @@ Hooks for Users}. @code{sb-aclrepl} provides an Allegro CL -style toplevel for SBCL, as an alternative to the classic CMUCL-style one. @xref{sb-aclrepl}. -@item CLTL2 Compatility Layer +@item CLTL2 Compatibility Layer @code{sb-cltl2} module provides @code{compiler-let} and environment access functionality described in @cite{Common Lisp The Language, 2nd Edition} which were removed from the language during the ANSI @@ -122,7 +126,7 @@ runtime. @item Bitwise Rotation @code{sb-rotate-byte} provides an efficient primitive for bitwise -rotation of integers, an operation required by eg. numerous +rotation of integers, an operation required by e.g. numerous cryptographic algorithms, but not available as a primitive in ANSI Common Lisp. @xref{sb-rotate-byte}. @@ -149,11 +153,11 @@ deals with choices that the ANSI standard leaves to the implementation. @menu -* Declarations:: -* FASL Format:: -* Compiler-only Implementation:: -* Defining Constants:: -* Style Warnings:: +* Declarations:: +* FASL Format:: +* Compiler-only Implementation:: +* Defining Constants:: +* Style Warnings:: @end menu @node Declarations @@ -202,9 +206,12 @@ SBCL is essentially a compiler-only implementation of Common Lisp. That is, for all but a few special cases, @code{eval} creates a lambda expression, calls @code{compile} on the lambda expression to create a compiled function, and then calls @code{funcall} on the resulting -function object. This is explicitly allowed by the ANSI standard, but -leads to some oddities, e.g. collapsing @code{functionp} and -@code{compiled-function-p} into the same predicate. +function object. A more traditional interpreter is also available on +default builds; it is usually only called internally. This is +explicitly allowed by the ANSI standard, but leads to some oddities; +e.g. at default settings, @code{functionp} and +@code{compiled-function-p} are equivalent, and they collapse into the +same function when SBCL is built without the interpreter. @node Defining Constants @comment node-name, next, previous, up @@ -227,14 +234,14 @@ compiling and loading reasonable code like runs into this undefined behavior. Many implementations of Common Lisp try to help the programmer around this annoyance by silently accepting the undefined code and trying to do what the programmer probably -meant. +meant. SBCL instead treats the undefined behavior as an error. Often such code can be rewritten in portable ANSI Common Lisp which has the desired behavior. E.g., the code above can be given an exactly defined meaning by replacing @code{defconstant} either with @code{defparameter} or with a customized macro which does the right -thing, eg. +thing, e.g. @lisp (defmacro define-constant (name value &optional doc) `(defconstant ,name (if (boundp ',name) (symbol-value ',name) ,value) @@ -254,13 +261,13 @@ SBCL gives style warnings about various kinds of perfectly legal code, e.g. @itemize - + @item @code{defmethod} without a preceding @code{defgeneric}; - + @item multiple @code{defun}s of the same symbol in different units; - + @item special variables not named in the conventional @code{*foo*} style, and lexical variables unconventionally named in the @code{*foo*} style @@ -288,9 +295,9 @@ case, but still isn't as of SBCL 0.7.6.) @section Development Tools @menu -* Editor Integration:: -* Language Reference:: -* Generating Executables:: +* Editor Integration:: +* Language Reference:: +* Generating Executables:: @end menu @node Editor Integration @@ -307,7 +314,7 @@ Currently @dfn{SLIME}@footnote{Historically, the ILISP package at @uref{http://ilisp.cons.org/} provided similar functionality, but it does not support modern SBCL versions.} (Superior Lisp Interaction Mode for Emacs) together with Emacs is recommended for use with -SBCL, though other options exist as well. +SBCL, though other options exist as well. SLIME can be downloaded from @uref{http://www.common-lisp.net/project/slime/}. @@ -339,10 +346,10 @@ sb-ext:save-lisp-and-die}. @section More SBCL Information @menu -* SBCL Homepage:: -* Online Documentation:: -* Additional Documentation Files:: -* Internals Documentation:: +* SBCL Homepage:: +* Online Documentation:: +* Additional Documentation Files:: +* Internals Documentation:: @end menu @node SBCL Homepage @@ -353,7 +360,7 @@ The SBCL website at @uref{http://www.sbcl.org/} has some general information, plus links to mailing lists devoted to SBCL, and to archives of these mailing lists. Subscribing to the mailing lists @cite{sbcl-help} and @cite{sbcl-announce} is recommended: both are -fairly low-volume, and help you keep abrest with SBCL development. +fairly low-volume, and help you keep abreast with SBCL development. @node Online Documentation @comment node-name, next, previous, up @@ -375,7 +382,7 @@ case the documentation strings are only readable in the source code. Besides this user manual both SBCL source and binary distributions include some other SBCL-specific documentation files, which should be -installed along with this manual in on your system, eg. in +installed along with this manual on your system, e.g. in @file{/usr/local/share/doc/sbcl/}. @table @file @@ -417,9 +424,9 @@ it is not installed by default. @section More Common Lisp Information @menu -* Internet Community:: -* Third-party Libraries:: -* Common Lisp Books:: +* Internet Community:: +* Third-party Libraries:: +* Common Lisp Books:: @end menu @node Internet Community @@ -462,7 +469,7 @@ learn about Common Lisp, some books stand out: @item Practical Common Lisp, by Peter Seibel An excellent introduction to the language, covering both the basics and ``advanced topics'' like macros, CLOS, and packages. Available -both in print format and on the web: @uref{http://www.gigamonkeys.com/book/}. +both in print format and on the web: @uref{http://www.gigamonkeys.com/book/}. @item Paradigms Of Artificial Intelligence Programming, by Peter Norvig Good information on general Common Lisp programming, and many @@ -487,8 +494,8 @@ lesser differences as well. This book tends to help with the culture shock. @item Art Of Metaobject Programming, by Gregor Kiczales et al. -Currently to prime source of information on the Common Lisp Metaobject -Protocol, which is supported by SBCL. Section 2 (Chapers 5 and 6) are +Currently the prime source of information on the Common Lisp Metaobject +Protocol, which is supported by SBCL. Section 2 (Chapters 5 and 6) are freely available at @uref{http://www.lisp.org/mop/}. @end table @@ -556,7 +563,7 @@ the @code{eval} function only truly ``interprets'' a few easy kinds of forms, such as symbols which are @code{boundp}. More complicated forms are evaluated by calling @code{compile} and then calling @code{funcall} on the returned result. - + The direct ancestor of SBCL is the x86 port of CMUCL. This port was in some ways the most cobbled-together of all the CMUCL ports, since a number of strange changes had to be made to support the register-poor @@ -598,7 +605,7 @@ Other major changes since the fork from CMUCL include SBCL has removed many CMUCL extensions, (e.g. IP networking, remote procedure call, Unix system interface, and X11 interface) from the core system. Most of these are available as contributed modules -(distributed with sbcl) or third-party modules instead. +(distributed with SBCL) or third-party modules instead. @item SBCL has deleted or deprecated some nonstandard features and code