From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newsfeed.esat.net!nslave.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader3.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: Destructive Side Effects References: <3215011069184765@naggum.net> <9t6doa$436$1@rznews2.rrze.uni-erlangen.de> Mail-Copies-To: never From: Erik Naggum Message-ID: <3215027399259500@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 43 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 17 Nov 2001 23:10:01 GMT X-Complaints-To: newsmaster@KPNQwest.no X-Trace: nreader3.kpnqwest.net 1006038601 193.71.66.49 (Sun, 18 Nov 2001 00:10:01 MET) NNTP-Posting-Date: Sun, 18 Nov 2001 00:10:01 MET Xref: archiver1.google.com comp.lang.lisp:20258 * "David McClain" | Actually, this is one of the surprising things about REMF that caught my | attention. You are correct that most often destructive operations in | Lisp operate in a functional manner... except for REMF (and no doubt a | few others...) Why this _completely_ irrelevant hangup? If properties were implemented with a hashtable, would you complain that remhash does not return a new hashtable instead of modifying the one you passed, too? Oh, no, now you will complain about remhash. What have I _done_? Now Common Lisp will crumble because property lists _and_ hashtables are mutable objects. Have you noticed that when you intern a symbol in a package, you do not get a new package? Or that when you read a character off a stream, you do not geta new stream? Or that when you write a character to a stream, which modifies a file on disk, you do not get a new disk? That you think REMF is "destructive" is only because you are looking at things at too low a level for your own good and abuse the implementation detail that it is a list, which is again because you have not quite figured out how to get what you want from the language. Even in your "side-effect-freeness" you actually modify memory cells in your computer, you know, but you would most probably argue that this is irrelevant to the side-effect-freeness nature of your programming language, right? Well, side-effect-free is actually _nothing_ but perspective. You only have a problem understanding how (Common) Lisp works. Once you get that understanding, you will either be the type who gripes about some feature you do not like for the rest of your life, or you will be the type who can make a more informed choice about which language you want to spend your time on, and then leave the rest alone. I really wonder what it is with Common Lisp that makes people first discover the language and then start to make up so many stupid problems with it just because they have some serious personality problems. I mean, _none_ of the standard conditionals are usable by some dude, and now remf is "destructive" and that by itself ticks some other troll off. Sheesh. /// -- Norway is now run by a priest from the fundamentalist Christian People's Party, the fifth largest party representing one eighth of the electorate. -- Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.