Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!lotus!esegue!johnl From: johnl@esegue.segue.boston.ma.us (John R. Levine) Newsgroups: comp.lang.misc Subject: Re: The Fundamental Concept of Programming language X Keywords: programming languages, abstractions Message-ID: <1990Jan14.175614.2342@esegue.segue.boston.ma.us> Date: 14 Jan 90 17:56:14 GMT References: <1470@mdbs.UUCP> <1782@aipna.ed.ac.uk> <2886@water.waterloo.edu> <1532@castle.ed.ac.uk> <666@s5.Morgan.COM> <32824@news.Think.COM> <1990Jan13.152226.4722@mentor.com> Reply-To: johnl@esegue.segue.boston.ma.us (John R. Levine) Organization: Segue Software, Cambridge MA Lines: 20 In article <1990Jan13.152226.4722@mentor.com> you write: >By the way, this seems to arise in CL due to the use of a different value >cell for the functional binding of an identifier. Can somebody tell me where >this differentiation arose and why? My Lisp 1.5 manual shows that this dates way back to the original version. There weren't value or function cells, just property lists for atoms and the A-list for lambda bindings. Function values were stored as the EXPR property for lambda expressions, the SUBR property for compiled code, or on the A-list for LABEL bindings. Values were stored as the APVAL property for permanently bound values or else found on the A-list. I suspect that it seemed more convenient not to have to worry about code and data namespace collision, rather than any deep opinion about their relative merits. Perhaps someone who was around in the early 60's can recall what the thinking was. -- John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 864 9650 johnl@esegue.segue.boston.ma.us, {ima|lotus|spdcc}!esegue!johnl "Now, we are all jelly doughnuts."