[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue: TEST-NOT-IF-NOT (Version 1)

    Date: 2 Oct 88 14:32 PDT
    From: masinter.pa@Xerox.COM
    Subject: Re: Issue: FUNCTION-COMPOSITION (Version 1)
    At least today, I think that adding these functions would be
    a good idea if we also remove the -IF-NOT functions. It would
    be a good idea given the current awkwardness of preventing
    both a :TEST and :TEST-NOT. 
    Are there other things that might easily be removed?
    How do you feel about removing :TEST-NOT and -IF-NOT?

I'm for it. Just so people have something concrete to haggle over,
here's a writeup and a separate place to discuss it.
Issue:          TEST-NOT-IF-NOT
References:     Functions offering a :TEST-NOT keyword:
                 ADJOIN (p276), ASSOC (p280), COUNT (p257), DELETE (p254),
                 DELETE-DUPLICATES (p254), FIND (p257),
                 INTERSECTION (p277), MEMBER (p275), MISMATCH (p257),
                 NINTERSECTION (p277), NSET-DIFFERENCE (p278),
                 NSET-EXCLUSIVE-OR (p278), NSUBLIS (p275), NSUBST (p274),
                 NSUBSTITUTE (p256), NUNION (p276), POSITION (p257),
                 RASSOC (p281), REMOVE (p253), REMOVE-DUPLICATES (p254),
                 SEARCH (p258), SET-DIFFERENCE (p278), 
                 SET-EXCLUSIVE-OR (p278), SUBLIS (p274), SUBSETP (p279),
                 SUBST (p273), SUBSTITUTE (p255), TREE-EQUAL (p264),
                 UNION (p276);
                Functions with "-IF-NOT" in their name:
                 ASSOC-IF-NOT (p280), COUNT-IF-NOT (p257),
                 DELETE-IF-NOT (p254), FIND-IF-NOT (p257),
                 MEMBER-IF-NOT (p275), NSUBST-IF-NOT (p274),
                 NSUBSTITUTE-IF-NOT (p256), POSITION-IF-NOT (p257),
                 RASSOC-IF-NOT (p281), REMOVE-IF-NOT (p253),
                 SUBST-IF-NOT (p273), SUBSTITUTE-IF-NOT (p255);
Category:       CHANGE
Edit history:   02-Oct-88, Version 1 by Pitman
Status:         For Internal Discussion

Problem Description:

  The -IF-NOT functions are functionally unnecessary.

  The :TEST-NOT keywords are not only functionally unnecessary but
  also problematic because it's not clear what to do when both :TEST
  and :TEST-NOT are provided.

  Many people think Common Lisp is more `bloated' than it needs
  to be and these aspects of the language are commonly cited
  specific examples.


  Remove all -IF-NOT functions (named above) from Common Lisp.

  Remove the :TEST-NOT keyword from the Common Lisp functions which 
  currently provide them (named above).


  This makes the language a bit simpler.

  The removal of :TEST-NOT also makes the language easier to explain.

Current Practice:

  Presumably no one has done this yet.

Cost to Implementors:

  Very slight.

  Some symbols would disappear from the LISP package but could
  still be offered in proprietary packages if deemed important

  Implementations could compatibly retain the :TEST-NOT keywords
  for an interim period.

Cost to Users:

  Some rewrites would be needed.

  Those rewrites, which are already fairly simple, would be even
  more simple if some form of the FUNCTION-COMPOSITION issue is
  voted in -- in particular, the COMPLEMENT function which it 
  proposes would help enormously in this regard.

Cost of Non-Adoption:

  Common Lisp would continue to be what some people feel is
  "bigger than it needs to be".


  The cost of non-adoption would be avoided.


  Presumably this makes the language easier to teach.


  It's possible to make FLUSH-TEST-NOT or FLUSH-IF-NOT proposals
  if we can't get enough people to buy into the full proposal but
  think we can get consensus on a subset.

  This issue is related to FUNCTION-COMPOSITION, but is not
  dependent on it.

  Pitman supports this change.