Path: utzoo!yunexus!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!cs.utexas.edu!yale!mintaka!mit-eddie!bu.edu!mirror!frog!cpoint!jjmhome!m2c!umvlsi!dime!cs.umass.edu!pop From: pop@cs.umass.edu Newsgroups: comp.lang.functional Subject: Is Lisp in class X? Message-ID: <14810@dime.cs.umass.edu> Date: 25 May 90 17:15:00 GMT Article-I.D.: dime.14810 Sender: news@dime.cs.umass.edu Reply-To: pop@cs.umass.edu () Organization: University of Massachusetts, Amherst Lines: 27 Re. article. <21581@megaron.cs.arizona.edu>, by David Gudeman. I would say that most Lisps fall short of being in X because they do not provide a proper treatment of function variables i.e. you cannot say (F X1 .... XN) where F is a variable - you have to do some funny circumlocution which I don't remember. The binding of functions to function names in LISP is of a different nature from variable bindings. Scheme, somewhat tardily, provides a LISP dialect that gets it right. Oddly, one of the reasons that Edinburgh got it right earlier (POP-2 -> Hope -> ML) is that we had available a machine, the Eliot 4100 series, with an instruction code designed by C.A.R.Hoare (et.al) c.1965. Hoare is not usually thought of in that sort of role... I believe that he had Algol 60 in mind: I do not think it was a very good Algol machine, since it was short of registers that could be used to implement a display, but the machine easily supported compilation of functional languages with little static typing, since it provided stacking instructions, an INDIRECT subroutine call, and user-definable extracodes. In particular, the indirect subroutine call, which was an unusual feature, made it natural to implement all function identifiers as variables. It also made it easy to do incremental compilation, with the function as the minimum unit of recompilation, and to write tracing procedures in the user language. Robin Popplestone.