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

*To*: "Steve Bacher (Batchman)" <@sail.stanford.edu:SEB1525@draper.com>, common-lisp@sail.stanford.edu*Subject*: Re: (eq #'eq #'eq) (reply to Jeff Dalton)*From*: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>*Date*: Sat, 17 Sep 88 16:41:31 BST*Cc*:*In-reply-to*: Steve Bacher (Batchman)'s message of Fri, 16 Sep 88 14:07 EDT

> If SYMBOL-FUNCTION "returns the autoloader function", then (eq f #'eq) > ...actually, this works out, but very peculiarly. It is not even slightly peculiar. (SYMBOL-FUNCTION 'F) returns whatever it returns. Presumably it does this consistently. There are two main cases: (1) F does not need to be autoloaded, and (2) F does need to be loaded. The second case then has two subcases: (2a) SYMBOL-FUNCTION causes the autoload to happen, or else (2b) it returns the autoloader function. Suppose F does not need to be autoloaded. Then SYMBOL-FUNCTION returns the function value of F. If you call it again, it returns that very same object (the function value) again. So these two results are F. Now suppose F needs to be autoloaded. Either calling SYMBOL-FUNCTION on F causes the autoloading to take place, and we are in the same situation as above, or else it does not cause the autoloading to take place but instead returns a function object that, if called, will autoload F. Again, if you call SYMBOL-FUNCTION again it will presumably behave in the same way and return the very same <call me and I'll autoload F> function object. Again the results are EQ. Since this argument is independent of choice of F, it applies when F is the symbol EQ. > I still don't consider this fortuitous setup to justify your point, > though. It is not a fortuitous setup. Access functions (such as SYMBOL- FUNCTION) return objects. Object identity can be tested with EQ. Of course, you might say that SYMBOL-FUNCTION isn't a simple access function. Perhaps it's not like SYMBOL-VALUE at all. Perhaps it always makes a new function object. If we take this line, then I am saying that SYMBOL-FUNCTION should change to be like SYMBOL- VALUE. Again, this is neither peciliar nor fortuitous: it is just a question of how SYMBOL-FUNCTION should behave. > Autoloading isn't the only rationale in any case. Consider > a system with multiple copies of the same function (perhaps liked into > several modules, or compiler-generated as quasi-inline minisubrs, or > whatever). I don't really know what you have in mind here, so I'm probably going to miss the point. I don't, for example, know what you mean by "the same". If "same" means EQ, then they aren't copies. And I'm talking only of #'F. This has different from cases like (F...), where F might be compiled in-line. -- Jeff

- Prev by Date:
**(eq #'eq #'eq) (reply to Jeff Dalton)** - Next by Date:
**Multiple copies of functions** - Previous by thread:
**(eq #'eq #'eq) (reply to Jeff Dalton)** - Next by thread:
**Multiple copies of functions** - Index(es):