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.