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

Re: What can I redefine?



> From: David C. Plummer <DCP@SCRC-QUABBIN.ARPA>
> 
> In addition, some systems know that CAR was not originally defined by
> the user, and may complain if the user tries to redefine it.  If the
> user did say "Yes, it's OK." I wouldn't be at all surprised if the user
> wouldn't immediately have to reload the Lisp system, as the system will
> probably get very unhappy when CAR returns something other than the
> first item of a list.

A few months ago when I was about to reboot anyway I redefined CAR on a
3670.  I played with the system for another ten minutes without finding
anything that this broke.  Even Chaos and the GC still worked.  This
isn't too surprising when you think about it.

All this was discussed several months ago.  It would appear the
compiler is permitted to open code anything for which it can prove it
knows the execution environment definition.  I can see no reason why
this should even exclude user-DEFUNed functions in the compilation
environment for COMPILE, or functions DEFUNed in the same file for
COMPILE-FILE.

Whatever one thinks about this mess, the issue probably should be
raised more explicitly in CLtL.  Meanwhile, one can always write:

	(FUNCALL (SYMBOL-FUNCTION 'CAR) FOO)

instead of

	(CAR FOO)

and hope no one has redefined FUNCALL or SYMBOL-FUNCTION.  Gag.