[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Keith Price <price@usc.edu>: &Rest failure]

    Date: Wed, 8 May 91 13:52:35 CDT
    From: flatau@CLI.COM (Arthur D. Flatau)

    Sure the behavior makes sense.  I don't know where it says this,

in the Document examiner do a "Show Candidates &rest"

select 1Other Incompatible Differences

0       2Some functions, macros, and objects in Symbolics Common Lisp (SCL)
0       2have implementation specification that are incompatible with Com-
0       2mon3 2Lisp, as specified in 4Common Lisp: The Language2 (4CLtL2).

0       2The following is a list of implementation specifications made in SCL,
0       2which are incompatible with Common Lisp, as specified in 4CLtL2.

0       2Each item in this list includes a reference to the section in 4CLtL2 that
0       2discusses the topic.3 

0       5o2 0 2The argument list for6 7&rest2 parameters has dynamic extent.

0         2Furthermore, the list of arguments should not be modified destruc-
0         2tively3 2with the 7rplaca2 or 7rplacd2 functions.3 2If you want to save3 2or
0         2return an 7&rest2 argument, use the 7copy-list2 function first.3 2See
0         2the lambda list keyword 7&rest2.3 2See 4CLtL2: Section 5.2.2, Lambda
0         2Expressions.
0       [...]


select 1Safety of 7&rest1 Arguments

0       2It is important to realize that the list of arguments to which a3 2rest-
0       2parameter is bound is set up in whatever way is most efficiently3 2im-
0       2plemented, rather than in the way that is most convenient for the
0       2function receiving the arguments.3 2It is not guaranteed to be a "real"
0       2list.3 2Sometimes the rest-args list is stored in the function-calling
0       2stack, and loses its validity when the function returns.3 2If a3 2rest-
0       2argument is to be returned or made part of permanent3 2list-structure,
0       2it must first be copied, as you must always assume that3 2it is one of
0       2these special lists.3 2See the function 7copy-list2.

0       2The system does not detect the error of omitting to copy a3 2rest-
0       2argument; you simply find that you have a value that seems to
0       2change behind your back.3 2At other times the rest-args list is an3 2argu-
0       2ment that was given to 7apply2; therefore it is not safe to3 7rplaca2 this
0       2list, as you might modify permanent data structure.3 2An3 2attempt to
0       7rplacd2 a rest-args list is unsafe in this case, while in3 2the first case
0       2it signals an error, since lists in the stack are3 2impossible to 7rplacd2.3