From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeed1.bredband.com!bredband!uio.no!news-feed.ifi.uio.no!ifi.uio.no!not-for-mail From: Erik Naggum Newsgroups: comp.lang.lisp Subject: Re: Legal ANSI comment form? Date: 24 Aug 2002 05:03:27 +0000 Organization: Naggum Software, Oslo, Norway Lines: 36 Message-ID: <3239154207275829@naggum.no> References: <3D655868.BFE4C243@cs.cmu.edu> <4hehmvyub.fsf@beta.franz.com> <3D664A1E.267602F2@cs.cmu.edu> <4adndk0py.fsf@beta.franz.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: maud.ifi.uio.no 1030165408 4530 129.240.64.16 (24 Aug 2002 05:03:28 GMT) X-Complaints-To: abuse@ifi.uio.no NNTP-Posting-Date: 24 Aug 2002 05:03:28 GMT Mail-Copies-To: never User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.lisp:38656 * Duane Rettig | The most commonly used (though not foolproof) method of such commenting is | to use a feature that you don't expect to be defined in your lisp. Argh! This is so dumb. Think about it. You remove a truly large fraction of your vocabulary from possible feature names. Think of all the synonyms that various programmers will use for this out of the misguided notion that feature names "mean" something. They should have the meaning that the thing they /name/ have. If you want to exclude something, you should do so based on something you /can/ know, not something you /hope/ you may know, but are only guessing about. In this age of multiculturalism and such, consider the mess if you run the whole gamut of Roget's-equivalents in all languages where people use Common Lisp, and you find that there is a significant risk of naming your feature something that "means" something in some other language, and obvious words can no longer be used for features because some idiot may have used it for a conditional. That is just /wrong/. Let me put this intensely: Never say #+never! I think Franz Inc code should use #-franz or something, and portable code should use #-common-lisp to exclude code that is never going to be parsed. This if fool-proof. If someone steals your code and they do not define the franz feature in time, you also get the extra benefit of taking revenge. If your application includes a feature symbol on `*features*´, then you can use that symbol to exclude code, too. E.g., if you write an application that pushes the (legal) feature lex-nemini-facit-injuriam on `*features*´, you actually /know/ that this feature will be there in your application, and since you control this yourself, you can use #-lex-nemini-facit-injuriam to argue that some code violates this feature, i.e., it would do injury if that feature was absent. -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.