[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Proposed definition of SUBST
- To: COMMON-LISP at SU-AI
- Subject: Proposed definition of SUBST
- From: Kent M. Pitman <KMP at MIT-MC>
- Date: Sat, 04 Sep 1982 06:28:00 -0000
Date: Saturday, 4 September 1982 01:02-EDT
From: Scott E. Fahlman <Fahlman at Cmu-20c>
Maybe the right move is to eliminate the :TEST-NOT option for SUBST.
All you really want here is some sort of equality test, so :TEST-NOT
makes no real sense here. Don't we have some precedents for this?...
Why not just flush all :TEST-NOTs and make a primitive COMPLEMENT as:
(DEFUN COMPLEMENT (FN) #'(LAMBDA (&REST STUFF) (NOT (APPLY FN STUFF))))
a smart compiler could generate fairly good code for this and in some
cases literal translations from things like (COMPLEMENT #'EQ) to #'NEQ could
be done, etc. I suspect the constant argument case will occur very often
so this optimization will be a very productive one. Then people would just
write :TEST (COMPLEMENT #'EQ) if it mattered to them to have the opposite
T (Yale Scheme) has this. It's much more general than :TEST-NOT (has
many more uses), simplifies the internal code of many system functions,
and simplifies the language definition.