Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!think!barmar From: barmar@think.COM (Barry Margolin) Newsgroups: comp.lang.lisp Subject: Re: lisp environments summary Message-ID: <13253@think.UUCP> Date: Tue, 8-Dec-87 22:18:01 EST Article-I.D.: think.13253 Posted: Tue Dec 8 22:18:01 1987 Date-Received: Sun, 13-Dec-87 16:44:01 EST References: <613@umbc3.UMD.EDU> <325@siemens.UUCP> <323@spar.SPAR.SLB.COM> <329@siemens.UUCP> Sender: usenet@think.UUCP Reply-To: barmar@sauron.UUCP (Barry Margolin) Organization: Thinking Machines Corporation, Cambridge, MA Lines: 52 Keywords: Interlisp, Editing, Files In article <329@siemens.UUCP> steve@siemens.UUCP (Steve Clark) writes: > I maintain that the non-Interlisp systems are wrong, however. It >is clearly more advanced to treat a file as a database of definitions of >functions, data, structures, etc. than to treat it as a string of characters >that might have been typed at the keyboard. However, since the rest of the >world hasn't caught up yet, there are bound to be incompatibilities. It would not be appropriate for a general-purpose Lisp standard to require the Interlisp style of permanent storage of function definitions. This style requires that a function editor be built into the Lisp system, and this may not be feasible or desirable in all implementations and/or environments. While many Common Lisp implementations do include an editor, at least one notable one (Kyoto Common Lisp) would have a hard time doing so. I also wonder whether the Interlisp database is as powerful as the Common Lisp LOAD style. I'm not very familiar with Interlisp, so bear with me. A file to be loaded can contain other code besides definitions and declarations; it can contain immediate code to be executed. Thus, the file LOAD-EVERYTHING.LISP could contain: (load "first-thing") (load "second-thing") (load "third-thing") (load "last-thing") How is this done in Interlisp? If there is a way to do it, then what's the difference between that and LOAD? The main thing that Common Lisp is missing is an easy way to save out definitions that were defined interactively. Common Lisp was designed primarily by users of Maclisp and its descendents, and they presumed a programming style built around text-file-based editor, so they didn't include such a feature. (Some implementations (e.g. MIT-derived Lisp Machines) provide editor commands to insert interpreted definitions into editor buffers, but this is beyond the scope of Common Lisp to define.) How does Interlisp know which definitions are important to save? I certainly wouldn't want it saving everything, since I constantly create little temporary functions and variables while debugging. If the user has to save functions explicitly it seems like it would be hard to make sure you don't miss some. I'm sure these problems have been solved, since I doubt Interlisp would have survived so long without solutions, but I'm curious how. --- Barry Margolin Thinking Machines Corp. barmar@think.com seismo!think!barmar