Subject: Re: delete? From: Erik Naggum <clerik@naggum.no> Date: 1998/01/24 Newsgroups: comp.lang.lisp Message-ID: <3094662584086617@naggum.no> * Greg Schohn | could anybody explain to me why this code has problems deleting the first | element of a list when it is selected ... DELETE is like NREVERSE or SORT in that they all work through destructive operations on (parts of) the argument value, but it is the value returned from the function that has all the properties of the performed operation. any prior access paths to the argument value will now hold a value that is not useful unless you know _exactly_ what the function did. it's safe to assume that you don't, since you had to ask. in many cases, it is not even possible to know exactly what a function did since an implementation is free to perform the function in any way that maintains the specified invariants and results. e.g., DELETE on a list is likely to return the first cons cell whose car is _not_ the item you want deleted. if you think about it, you realize that it couldn't do anything else, because it would have needed access to whatever contained the list as its value to do that and only the caller has access to that since Lisp calls functions with the computed _values_ of all arguments. you will therefore have to assign the returned value back to the variable to get the desired effect of deleting the first element. (isn't this in some FAQ already?) #:Erik -- The year "98" was new 1900 years ago. | Help fight MULE in GNU Emacs 20! Be year 2000 compliant, write "1998"! | http://sourcery.naggum.no/emacs/