Subject: Re: Creating functions at runtime From: Erik Naggum <erik@naggum.no> Date: 06 Oct 2002 02:01:04 +0000 Newsgroups: comp.lang.lisp Message-ID: <3242858464030907@naggum.no> * Henrik Motakef | Why are the *-if-not forms deprecated? They were deemed to be replaceable with `complement´ that was created to make the `:test-not´ keywords obsolete because the semantics of supplying both `:test´ and `:test-not´ arguments was unclear. In practice, using `complement´ in preference to `-if-not´ and `:test-not´has not been a succcess. | Is this something to really worry about? No. The `-if-not´ functions will remain in a future version of the standard as it was a mistake to deprecate them. However, the likelihood of there being a future version of the standard is pretty low, too, so if you want to use `:test-not´ arguments, rest assured that they have well-defined semantics when not used in the presence of `:test´ and vice versa. The complications mainly involve the use of `apply´ on an argument list that may contain `:test´ or `:test-not´ arguments and you supply other arguments before them. The obvious solution of using the first match is underspecified and cannot be trusted to be implemented everywhere. However, if an implementation chooses to treat an argument list like `:test-not foo :test bar´ to mean that `bar´ will be called and not `foo´, it is clearly a design mistake and should be reported as a bug. -- 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.