From: ······@my-dejanews.com
Subject: FAQ: ANSI changes to CLTL2
Date: 
Message-ID: <7g1m4e$75k$1@nnrp1.dejanews.com>
FAQ: How can I alter my copy of CLTL2 (Common Lisp the Language, 2nd
edition, by G. L. Steele Jr., Digital Press, 1990) to note ANSI Common
Lisp changes since its original publication?

Version: 1

This document describes how to alter (mark up or edit) your personal
copy of CLTL2 to note new information from the ANSI Common Lisp
standard. No guarantees on the completeness or accuracy of the
information provided is expressed or implied. Use at your own risk. A
doctored CLTL2 is NOT the ANSI standard. In fact, this FAQ has many
known but minor omissions that are too awkward to add with pencil to
CLTL2. My purpose in providing this information is to help you improve
a familiar book and common source of information on Common Lisp. For
information on ANSI Common Lisp I recommend these two sources: The
Common Lisp HyperSpec at
http://www.harlequin.com/education/books/HyperSpec/, and Appendices C
and D of the book _ANSI Common Lisp_ by Paul Graham, Prentice-Hall,
1996 (a 2nd edition of this book was due out in April 1999 but has
been delayed until the year 2000). A third source used in the
preparation of this FAQ is Appendix A of the _Allegro CL User Guide,
Version 4.3_, March 1996. This appendix is Franz's tally of the ANSI
committee's votes. Franz also distributes an alternate html version of
the ANSI Common Lisp Standard with the ACL 5.0 product. It covers the
same material as the HyperSpec.

Send all comments, corrections, additions, complaints, etc. to
···········@ieee.org.

Example of the notation used: p128,c2,ld4,lu7 translates to page 128,
column 2, go 4 lines down from top and go 7 lines up from bottom.

1) ANSI replaced function get-setf-method with get-setf-expansion. ANSI
renamed get-setf-method-multiple-value to get-setf-expansion. Note
deletion:
p144,ld9-lu8 get-setf-method definition
Replace get-setf-[method -> expansion]:
p133,ld3
p135,ld2,ld18
p137,ld1,lu2
p142,ld18,lu3
p143,ld4,ld8
p145,ld2?,ld8?
p688,lu5
Replace get-setf-[method-multiple-value -> expansion]:
p145,ld3,ld4

2) ANSI deleted the functions variable-information,
function-information, declaration-information, augment-environment,
parse-macro, and enclose as well as the macro define-declaration. This
effectively deletes section "8.5 Environments:"
p207,ld16-p214,lu1

3) ANSI deleted functions applyhook and evalhook along with the
variables *applyhook* and *evalhook*. Note deletions:
p179,lu15
p203,ld11
p490,ld9
p490,lu7
p491,ld12-p493,lu1 the definitions

4) ANSI deleted generic-flet, generic-function, generic-labels and
with-added-methods. Note deletions:
p73, Table 5-1, lu4,lu3 (in table)
p216,lu12-lu9
p787,ld20-ld21
p787,lu15-p788,ld3 four small paragraphs
p788,lu19-lu18,lu14
p844,lu5-p846,lu1 generic-flet, generic-function, generic-labels
definitions
p862,ld1-p863,ld8 with-added-methods definition

5) ANSI renamed define-setf-method to be define-setf-expander. Replace
define-setf-[method -> expander]:
p127,lu14
p128,ld6
p129,ld15,lu3
p131,ld8
p132,ld1,lu5
p133,ld8
p137,ld1
p141,lu6
p142,ld3,ld7,ld10,ld15,lu3
p143,ld5,lu15,lu10
p168,lu11,lu8
p216,ld1,ld15
p672,ld7
p688,lu11,lu8
p841,lu9

6) ANSI renamed special-form-p to special-operator-p. Replace
special-[form -> operator]-p:
p73,ld5
p119,ld18
p120,lu14,lu5,lu4
p121,ld1
p195,ld9

7) ANSI renamed simple-condition-format-string to
simple-condition-format-control along with the condition
initialization keyword :format-string to :format-control. Replace
simple-condition-format-[string -> control]:
p918,ld12,lu14,lu5
p919,ld1,lu3
Replace :format-[string -> control]:
p887,ld11,lu9
p888,ld11
p891,lu13,lu8
p912,ld18
p915,ld6
p918,ld11,lu15,lu6
p919,lu5

8) ANSI renamed base-character to be base-char. Replace
base-[character -> char]:
p26,lu3
p27,ld2,ld4,ld5,ld8
p33,lu5,lu4
p39,lu5,lu4
p49,lu10
p50,ld15
p61,lu2
p62,ld2
p371,lu1
p647,lu14,lu7

9) ANSI renamed extended-character to be extended-char. Replace
extended-[character -> char]:
p27,ld1
p39,lu4
p49,lu11
p50,ld15
p371,lu1

10) ANSI deprecated the functions set and gentemp. Make note on
definitions:
p122,lu16 for set
p246,ld13 for gentemp

11) ANSI restored the module facility. It is now only deprecated. Make
note on section "11.8 Modules":
p277,ld12-ld17

12) ANSI specifies the constant array-total-size-limit to be a
fixnum. An argument to row-major-aref can therefore be declared
as such. Note so at:
p446,lu3

13) ANSI added a :print-object keyword argument to defstruct. Add to
the bottom of p479:

:print-object
This option is like the existing :print-function one and takes a
function as the keyword's argument. This function takes only the first
two arguments described in :print-function. Only one of :print-object,
:print-function, or :type can be used.

14) ANSI extends setf to take a values expression as the first
argument. CLTL2 notes that a proposal to do so was made. Note that it
was accepted on p129,ld18-ld23.

15) ANSI specifies many functions which must have proper lists
(non-dotted lists). Note that these functions must have proper lists:
p171 mapcar
p171 maplist
p171 mapc
p171 mapl
p171 mapcan
p171 mapcon
p242 get-properties
p418 append (note: ANSI allows nconc to take dotted lists)
p426 member
p426 member-if
p426 member-if-not
p427 adjoin
p428 union
p428 nunion
p429 intersection
p429 nintersection
p429 set-difference
p429 nset-difference
p430 set-exclusive-or
p430 nset-exclusive-or
p431 subsetp

16) ANSI supplies a new data type boolean with members t and nil. Note
so on bottom of p12 and p41. Add index entry:
"boolean type, 12,41"
to:
p983,c3,lu26

17) ANSI changed arguments to make-load-form and
make-load-form-saving-slots. Change p659,ld16 to:
make-load-form object &key :environment             [Generic Function]
and change p662,lu9 to:
make-load-form-saving-slots object &key :slots :environment [Function]

18) ANSI changed loop for/as - on end test from endp to atom:
p721,ld11

19) ANSI added IEEE conditions floating-point-invalid-operation and
floating-point-inexact as subconditions of arithmetic-error. Note on
bottom of p922.

20) ANSI added allocate-instance a new generic function. Add to bottom
of p848:
allocate-instance class &rest initargs              [Generic function]

This generic function is like make-instance but does not initialize
slots.

Add index entry:
"allocate-instance generic function, 848"
to:
p981,c2,ld22
p1024,c1,ld6

21) ANSI added array-displacement a new function. Add to bottom of
p448:
array-displacement array                                    [Function]

This returns two values. The first value is the array displaced to and
the second is the displacement. If array is not a displaced array then
array-displacement returns the values nil and 0.

Add index entry:
"array-displacement function, 448"
to:
p982,c1,lu1
p1019,c1,lu7

22) ANSI added constantly a new function. Add to bottom of p708:
constantly object                                           [Function]

Returns a function that will always return the object. The returned
function takes any number of arguments.

Add index entry:
"constantly function, 708"
to:
p987,c3,ld32
p1020,c2,ld10

23) ANSI added define-symbol-macro a new macro. Add to bottom of p214:
define-symbol-macro symbol {form}                              [Macro]

The symbol will act as a macro call. A single form constitutes the
body of the expansion. The symbol cannot already be a special
variable.

Add index entry:
"define-symbol-function macro, 214"
to:
p989,c3,ld20
p1026,c1,lu13

24) ANSI added ensure-directories-exist a new function. Add to bottom
of p652:
ensure-directories-exist file &key :verbose                 [Function]

If the directories of file do not exist then this function creates
them returning two values, file and a second value true if the
directories were created or nil if not.

Add index entry:
"ensure-directories-exist function, 652"
to:
p991,c3,ld4
p1020,c3,ld4

25) ANSI added lambda a new macro. Add to bottom of p708:
lambda lambda-list [[ {declaration}* | [doc-string]] {form}*  [Macro]

A shortcut for (function (lambda ...)) or #'(lambda ...).

26) ANSI added read-sequence a new function. Add to bottom of p576:
read-sequence sequence input-stream &key :start :end      [Function]

This function reads elements from input-stream into sequence. The
position of the first unchanged element of sequence is returned.

Add index entry:
"read-sequence function, 576"
to:
p1007,c2,ld22
p1022,c2,lu7

27) ANSI added write-sequence a new function. Add to bottom of p577:
write-sequence sequence output-stream &key :start :end    [Function]

This function writes elements of sequence to output-stream.

Add index entry:
"write-sequence function, 577"
to:
p1016,c2,ld30
p1023,c3,lu6

-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/       Search, Read, Discuss, or Start Your Own