From jkf Tue Apr 13 00:12:22 1982 To: /na/doe/jkf/lispnews Subject: new features In response to requests from franz users, these enhancements have been made: In Lisp 38.07, if the lisp variable 'displace-macros' is set to non-nil, then when a macro expansion is done by the evaluator, the resulting expansion replaces the original call. This means that macro expansion is only done once. In Liszt 8.03, the 'function' function is open coded. If you have (function (lambda ....)) in your code then the lambda expression is compiled as a separate function and the result of the function call is a 'bcd' object which points to that compiled lambda. From jkf Sun Apr 18 13:16:46 1982 To: local-lisp Subject: opus 38.09 The new features of this version are: If the load function ends up fasl'ing in a file, then load will do what is necessary to insure that the new functions are linked in correctly. Previously, if you turned on the transfer tables with (sstatus translink on) or (sstatus translink t) and then fasl'ed in functions which already existed, the old versions of the functions would still be used, unless you did (sstatus translink on) yourself. Now this is done automatically. tyi now accepts a second argument which is the object to return upon eof. -1 is the default. (pp-form 'g_obj ['p_port]) should be used instead of $prpr for pretty printing a form. The storage allocator and collector has been modified to add two new data types: vector and vector immediate. They are not in their final form so I suggest that you not try to use them. However, be on the lookout for garbage collection bugs. From jkf Wed Apr 21 07:45:54 1982 To: local-lisp Subject: liszt 8.04 the new features of liszt 8.04 are: 1) init files: Before liszt begins compiling, it looks for an init file to load in. It first searches in the current directory, and then it searches your home directory (getenv 'HOME). It looks for file names: .lisztrc.o .lisztrc.l lisztrc.o lisztrc.l It loads only the first one it finds. 2) interrupt handling If you interrupt liszt (with ^C typically), it will remove its temporary file and exit. 3) preallocation of space It preallocates space in order to reduce the number of gc's done during compiling. From jkf Wed Apr 21 13:47:50 1982 To: local-lisp Subject: lisp opus 38.10 lisp will now look for a lisprc in a way similar to liszt. It will first search in . and then in $HOME It will look for the file .lisprc or lisprc ending with .o, .l and then just .lisprc or lisprc. Shortly, it will only look for files ending in .l and .o since we don't want to encourage files with non-standard filename extensions. From jkf Wed Apr 21 23:40:59 1982 To: local-lisp Subject: lisp opus 38.11 I finally got sick of showstack and baktrace and rewrote them in lisp, rincorporating some of the features people have been requesting. Showstack now works as follows: (showstack) : show all interesting forms. Forms resulting from the trace package are not printed as well as extraneous calls to eval. In the form printed, the special form <**> means 'the previous expression printed'. prinlevel and prinlength are set to reasonable values to prevent the expression from getting too large (showstack t) : same as above but print all expressions. (showstack 5) : print only the first 5 expressions. of course, 5 is not the only possible numeric argument. (showstack lev 3) : set prinlevel to 3 before printing (showstack len 4) : set prinlength to 4 before printing the above arguments can be used in combination. The default value of prinlevel is showstack-prinlevel, that of prinlength is showstack-prinlength. the default showstack printer is the value of showstack-printer (default is 'print'). baktrace accepts the same arguments as showstack, but it ignores the prinlevel and prinlength arguments. From jkf Sat Apr 24 08:55:18 1982 To: local-lisp Subject: lisp opus 38.12, liszt 8.05 these changes and enhancements were made: 1) the function 'function' in the interpreter acts just like 'quote' In the compiler, 'function' will act like 'quote' unless the argument is a lambda expression, in which case liszt will replace the lambda expression with a unique symbol. That unique symbol's function cell will contain a compiled version of the lambda expression. These changes will make Franz compatible with Maclisp type lisps, as far as the treatment of 'function' 2) Mechanisms were added to permit user written C or Fortran code to call lisp code. Everything isn't quite ready yet. 3) Signal was fixed so that if you ask for a signal to be ignored, the operating system will be notified. The correct way to fork a lisp is now: (cond ((fork) (signal 2 (prog1 (signal 2) (wait))))) 4) You can select the default function trace uses to print the arguments and results. Just lambda bind trace-printer to the name of the function you want it to use. The standard trace-printer sets prinlevel and prinlength to the values of trace-prinlevel and trace-prinlength before printing. By default, trace-prinlevel is 4, and trace-prinlength is 5 From jkf Sun Apr 25 23:46:16 1982 To: local-lisp Subject: lisp opus 38.13 Functions 1+ and 1- are now part of the interpreter, rather than being made equivalent to add1 and sub1. From jkf Wed Apr 28 09:52:43 1982 To: local-lisp Subject: Opus 38.14 Has these new features: 1) the message [load filename] will appear before load reads in a lisp source file. This can be disabled by setting $ldprint to nil. 2) a function 'truename' as been added. It takes a port and returns the name of the file associated with that port. It returns a string if there is a file associated with the port, otherwise it returns nil. From jkf Wed Apr 28 10:36:34 1982 To: local-lisp Subject: more on opus 38.14 $ldprint is lambda bound to nil during the loading of the lisprc file. From jkf Wed May 5 08:30:00 1982 To: local-lisp Subject: opus 38.15 a minor modification: 'makhunk' is now more efficient. From jkf Wed May 5 20:56:40 1982 To: local-lisp Subject: Opus 38.16 A new function was added: (hunk-to-list 'h_hunk) returns the elements of h_hunk as a list. Also, the error message printed when an oversized print name is encountered has been improved. From jkf Fri May 7 20:03:40 1982 To: local-lisp Subject: Liszt version 8.06 Local declarations are now supported. You can say: (defun foo (a b) (declare (special a)) ... body ...) and the special declaration for 'a' will affect the body of function foo only. The 'a' which is an argument to foo will also be special in this case. Declarations may be 1) at the top level, not within a function body. 2) at the beginning of a 'lambda' body. 3) at the beginning of a 'prog' body 4) at the beginning of a 'do' body. 'the beginning' means either the first, second or third form in the body. When the compiler is searching for declarations, it will not macroexpand. Fixnum declarations now have meaning. If you do (declare (fixnum i j)) then (greaterp i j) will be converted to (>& i j) The declare function is now defined in the compiler. Previously, the only way to declare something was for the compiler to 'compile' the declaration form. Now, if you load or fasl in a file with a declare statement in it, the declare statement will have the proper effect in the compiler. (function (lambda () ...)), (function (nlambda () ...)) and (function (lexpr () ...)) are all supported. From jkf Wed May 12 08:15:37 1982 To: local-lisp Subject: Lisp Opus 38.17 ... has a minor bug fix: The port returned by 'fileopen' will now print correctly. From jkf Tue May 25 06:18:04 1982 Date: 25-May-82 06:17:51-PDT (Tue) From: jkf Subject: opus 38.18 Via: ucbkim.EtherNet (V3.100 [3/27/82]); 25-May-82 06:18:04-PDT (Tue) To: local-lisp The msg macro will now evaluate all atom arguments except the ones for carriage control (N B). Thus if you used (msg foo) you should now use (msg "foo"). From jkf Thu May 27 08:29:29 1982 To: local-lisp Subject: liszt 8.08 Fixes a bug in the code which converts generic arithmetic to fixnum only arithmetic. Liszt was converting from generic to fixnum operators based on the first argument only due to a typo in the code. From jkf Wed Jun 9 07:25:19 1982 To: local-lisp Subject: lisp Opus 38.20 There is now a character macro for reading hexadecimal. #x1f = #X1f = #X1F = 31 #x-1f = -31 From jkf Thu Jun 17 15:42:54 1982 To: local-lisp Subject: Lisp Opus 38.21 Has two routines for interfacing with termcap. These routines were written by morris djavaher and are meant to be called by lisp programs which have yet to be installed. From jkf Tue Jun 22 09:09:25 1982 Date: 22-Jun-82 09:09:13-PDT (Tue) From: jkf Subject: opus 38.22 Via: ucbkim.EtherNet (V3.120 [6/17/82]); 22-Jun-82 09:09:25-PDT (Tue) To: local-lisp setq with no arguments will now return nil. From jkf Wed Jun 30 19:05:54 1982 Date: 30-Jun-82 19:05:32-PDT (Wed) From: jkf (John Foderaro) Subject: liszt 8.09 Via: ucbkim.EtherNet (V3.130 [6/26/82]); 30-Jun-82 19:05:54-PDT (Wed) To: local-lisp liszt will now look in 12 places for an init file when it starts up. It will load in the first one it comes to only. The files it looks for are: { ./ , $HOME } { .lisztrc , lisztrc } { .o , .l , } From jkf Tue Sep 14 08:53:03 1982 Date: 14-Sep-82 08:52:44-PDT (Tue) From: jkf (John Foderaro) Subject: lisp opus 38.26 Message-Id: <8208141553.9999@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.193 [9/6/82]) id a09999; 14-Sep-82 08:53:03-PDT (Tue) To: local-lisp Franz used to read the symbols 4dxx 4Dxx and 4Exx as 4exx. Now it reads them (and other similar symbols) correctly. From jkf Sat Oct 2 15:15:48 1982 Date: 2-Oct-82 15:15:32-PDT (Sat) From: jkf (John Foderaro) Subject: lisp opus 38.27 Message-Id: <8209022215.10796@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.193 [9/6/82]) id a10796; 2-Oct-82 15:15:48-PDT (Sat) To: local-lisp If you set the variable top-level-print to a non nil value, then that value will be used by the top-level to print out the result of the evaluation. This has effect in break loops too. For example, if you want the pretty printer to print out the top level values, type (setq top-level-print 'pp-form). From jkf Sun Oct 3 19:28:45 1982 Date: 3-Oct-82 19:28:29-PDT (Sun) From: jkf (John Foderaro) Subject: lisp opus 38.28 Message-Id: <8209040228.9829@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.193 [9/6/82]) id a09829; 3-Oct-82 19:28:45-PDT (Sun) To: local-lisp A modification has been made to the load function. Normally if you type (load 'x), the load function will first try to fasl the file x.o and failing that it will try to load x.l If you (setq load-most-recent t), and if x.l and x.o both exist, then load will fasl or load the most recently modified file. The load-most-recent flag only has an effect if you type the filename without a trailing .l or .o. From jkf Tue Oct 5 21:01:55 1982 Date: 5-Oct-82 21:01:33-PDT (Tue) From: jkf (John Foderaro) Subject: liszt 8.12, lisp 38.29 Message-Id: <8209060401.6358@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.193 [9/6/82]) id a06358; 5-Oct-82 21:01:55-PDT (Tue) To: local-lisp Liszt will now check that you are passing the correct number of arguments to functions. As a result, some files which have compiled without complaint in the past may compile now with warnings or errors. In this note, I'll explain what the compiler knows, what it looks for in your program, and how you can help the compiler understand your program. For each function, liszt either knows nothing about the the number of arguments to a function, or it knows the minimum number of arguments, or the maximum number of arguments, or both the minimum and maximum number of arguments. This information comes about in one of three ways: 1) it is known when liszt starts (by virtue of a value stored under the fcn-info indicator on a function's property list) 2) it is declared by the user, either via (declare (*arginfo ...)) or (declare (*args ...)) [see below] 3) it is determined when a (lambda) function is compiled. When a lambda is compiled, the compiler can easily figure out the minimum and maximum number of arguments. When an nlambda or lexpr function is compiled, the compiler doesn't make a guess as to how many arguments are expected. The user should use the (declare (*args ...)) form to tell the compiler how many arguments are expected. For lexpr's generated via 'defun' using &optional and &rest keywords, the correct declaration is generated automatically. Once liszt determines the number of arguments to a function, it uses that information to check that the function is called with the correct number of arguments. It does not check calls to the function that occured before it determined the correct number of arguments. [This backward checking will be added sometime in the future.] If liszt finds that a function is called with the wrong number of arguments, it prints an informative message. That message is a error if the function being called is one which is open coded by the compiler. The message is a warning otherwise. The reason for the distinction is that you are free to redefine functions not open coded by the compiler. If the number of arguments is not correct, it may just be that the compiler's database and your code are refering to two different functions. If you redefine system functions, you should use the (declare (*arginfo ...)) form to let the compiler know about the number of arguments expected by your version of the functions. You can declare the number of arguments to functions using this form (declare (*arginfo (fcnname1 min1 max1) (fcnname2 min2 max2) ...)) where each min or max is either a fixnum or nil (meaning "I don't know") for example, here are some `correct' declarations: (declare (*arginfo (read 0 2) (cons 2 2) (boole 3 nil) (append nil nil))) explanation: (read 0 2) means that the function read expects between 0 and 2 arguments (inclusive). (cons 2 2) means that cons expects 2 arguments. (boole 3 nil) means that boole expects at least 3 arguments. (append nil nil) means that append expects any number of arguments, this is equivalent to (append 0 nil). The *arginfo declaration is usually made at the top level of a file. To declare the argument characteristics of the current function being compiled use the '*args' declaration. It looks somewhat like the *arginfo declaration. It is best explained with examples (def read (lexpr (n) (declare (*args 0 2)) ... code for read )) (def process (nlambda (x) (declare (*args 1 3)) ... code for process )) Note: the *args declaration is not needed for lambda's. If you get an error or warning which you believe is incorrect, it is probably due to an incorrect database entry. Please let me know and I will fix it immediately. I expect that there will be quite a few of these errors because much of the database was built by hand. From jkf Fri Oct 8 12:55:45 1982 Date: 8-Oct-82 12:55:31-PDT (Fri) From: jkf (John Foderaro) Subject: lisp 38.30, liszt 8.13 Message-Id: <8209081955.4140@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.193 [9/6/82]) id a04140; 8-Oct-82 12:55:45-PDT (Fri) To: local-lisp There are now three new functions for dealing with processes: *process *process-send *process-receive These functions are designed to replace the 'process' function, which, due to its nlambda'ness, was difficult to use. All of the above functions are lambda's or lexpr's. See chapter 6 of the manual (its on-line) for the details of these functions. This is a quick summary: (*process-send 'st_command) tells the shell to run the command st_command concurrently, and returns a write-only port. Characters written to this port will appear at the standard input of st_command. example: (setq p (*process-send "mail jkf")) (print 'HiThere p) (close p) (*process-receive 'st_command) tells the shell to run st_command concurrently, and returns a read-only port. Characters written to the standard output by st_command will be available by reading from the given port. Characters written on the standard error by st_command will appear on lisp's the standard error (the terminal most likely). example: ; to see if foo is logged in: (setq p (*process-receive "u")) (do ((user (read p '**eof**) (read p '**eof**))) ((eq '**eof** user) (print 'Not-Logged-In)) (cond ((eq 'foo user) (print 'Is-Logged-In)))) (close p) (*process 'st_command ['g_readp ['g_writep]]) this is the general function which process, *process-send and *process-receive call. If called with one argument it starts the new process and waits for it to end, e.g: (*process (concat "vi " filename)) In this case *process return the exit code of the process. The g_readp and g_writep arguments, if given, tell *process to run the process concurrently. If g_read is non nil then *process will return a port just like *process-receive. If g_writep is non-nil, then *process will set up a pipe like *process-send. *process will return a list of the form (readport writeport process-id) where readport and writeport will only be a port if g_readp or g_writep are non nil. A little know fact about processes is that a process, once started, cannot die and disappear until its parent asks about its status. Take the mail example given above: (setq p (*process-send "mail jkf")) (print 'HiThere p) (close p) after the mail process finishes it work, it will attempt to die, returning an integer called the 'exit status'. However until the lisp program asks about its status the mail process will remain in existence in a Zombie state, somewhere between life and death. ps will show this: PID TT STAT TIME COMMAND 3876 p0 Z 0:01 <exiting> A user is only allowed a small number of processes, so if you continue to generate processes and leave them around as Zombies, you will eventually run out of processes. The way to let the Zombie die is to call the wait function, e.g. -> (wait) (3876 . 0) -> this says that process 3876 died with exit status 0. Also, when you exit lisp the shell will clean up the Zombies. If you start a process with (*process "vi foo") then lisp will wait for it to complete before continuing, so you don't have to worry about Zombies. You only have to worry if you run a process concurrently, such as when you use *process-send or *process-receive. From jkf Tue Oct 12 10:44:22 1982 Date: 12-Oct-82 10:43:52-PDT (Tue) From: jkf (John Foderaro) Subject: lisp opus 38.31 Message-Id: <8209121744.29800@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.220 [10/11/82]) id A29800; 12-Oct-82 10:44:22-PDT (Tue) To: local-lisp new function: (time-string ['x_time]) if given no arguments, it returns the current time as a string. if given an argument, x_time, then it converts that argument to a time string and returns that string. The argument should represent the number of seconds since Jan 1, 1970 (GMT). note that this makes (status ctime) obsolete. From jkf Tue Oct 12 14:35:26 1982 Date: 12-Oct-82 14:34:10-PDT (Tue) From: jkf (John Foderaro) Subject: also in opus 38.31 Message-Id: <8209122135.5086@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.220 [10/11/82]) id A05086; 12-Oct-82 14:35:26-PDT (Tue) To: local-lisp If top-level-read is set to a non nil value, then the lisp top level will funcall it to read a form for evaluation. It will be funcalled with two arguments, a port and an eof marker. top-level-read will be used in break levels too. Be very careful when setting top-level-read because if you set it to an illegal value, there is no way to correct it. From jkf Tue Oct 19 18:54:18 1982 Date: 19-Oct-82 18:54:02-PDT (Tue) From: jkf (John Foderaro) Subject: lisp tags Message-Id: <8209200154.195@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A00195; 19-Oct-82 18:54:18-PDT (Tue) To: franz-friends We also use vi style tags so emacs users and vi users can share the same tags file. Rather than modify ctags, we use this shell script: #!/bin/csh # make a tags file for lisp source files. # use: # lisptags foo.l bar.l baz.l ... bof.l # generate the file 'tags' # awk -f /usr/local/lib/ltags $* | sort > tags where the file /usr/local/lib/ltags is /^\(DEF/ { print $2 " " FILENAME " ?^" $0 "$?" } /^\(def/ { print $2 " " FILENAME " ?^" $0 "$?" } From jkf Tue Oct 19 22:50:40 1982 Date: 19-Oct-82 22:50:29-PDT (Tue) From: jkf (John Foderaro) Subject: Lisp Opus 38.32, Liszt 8.14 Message-Id: <8209200550.3968@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A03968; 19-Oct-82 22:50:40-PDT (Tue) To: local-lisp Topic 1: liszt can now autoload macros. If liszt encounters a symbol without a function definition but with a macro-autoload indicator on the property list, then the value of the indicator is a file to load which should define the macro. The interpreter's undefined function handler will also look for macro-autoload properties, thus you needn't give a symbol both an autoload and a macro-autoload property. The default lisp contains macro-autoload properties for the macros defstruct, loop and defflavor. Topic 2: It is now possible to define 'compiler only macros' or cmacros. A cmacro acts like a normal macro, but will only be used by the compiler. A cmacro is stored on the property list of a symbol under the indicator 'cmacro'. Thus a function can have a normal definition and a cmacro definition. The macro 'defcmacro' has a syntax identical to 'defmacro' and creates cmacros instead of macros. For an example of the use of cmacros, see the definitions of nthcdr and nth in /usr/lib/lisp/common2.l Topic 3: If the form (foo ...) is macro expanded and the result also begins with the symbol foo, then liszt will stop macro expanding (previously it got into an infinite loop). Topic 4: The function nth has been added to Franz. (nth 'x_index 'l_list) returns the nth element of l_list, where the car of the list is accessed with (nth 0 'l_list) The macros (push 'g_value 'g_stack), and (pop 'g_stack ['g_into]) have been added to franz. typical uses (setq foo nil) (push 'xxx foo) (push 123 foo) now foo = (123 xxx) (pop foo) returns 123 now foo = (xxx) (pop foo yyy) returns xxx and sets yyy to xxx Topic 5: The version of Flavors written at Mit for Franz have been transported here. Flavors is a system for doing object oriented programming in lisp. The documentation for flavors in the Lisp Machine manual from Mit. Since Lisp Machine manuals are rather scarce around here, perhaps we can find someone to make copies of the flavor chapter for those interested in it. There is a description of the unique features of the Franz Flavors in /usr/lib/lisp/flavors.usage. As mentioned above, the flavors code will be autoloaded when you call 'defflavor' for the first time. Our local flavors expert is Eric Cooper (r.ecc). From jkf Fri Oct 22 15:46:51 1982 Date: 22-Oct-82 15:46:32-PDT (Fri) From: jkf (John Foderaro) Subject: lisp opus 38.34 Message-Id: <8209222246.5610@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A05610; 22-Oct-82 15:46:51-PDT (Fri) To: local-lisp Franz lisp now has a form of closure called an fclosure. A fclosure is a compromise between a funarg and the type of functional object that we currently have in Franz. In this short note, I'll explain through examples what fclosures are and where you might use them, and finally describe the new functions. The fclosure system was designed to be compatible with the Lisp Machine closures, so you may want to look at a Lisp Machine manual for more information. fclosure are related to closures in this way: (fclosure '(a b) 'foo) <==> (let ((a a) (b b)) (closure '(a b) 'foo)) A example of the use of fclosures: ->(setq counter 0) 0 ->(setq x (fclosure '(counter) '(lambda (val) (setq counter (+ val counter))))) fclosure[1] The function 'fclosure' creates a new type of object called a fclosure. A fclosure object contains a functional object, and a set of symbols and values for the symbols. In the above example, the fclosure functional object is (lambda (val) (setq counter (+ val counter))) and the set of symbols and values just contains the symbol 'counter' and zero, the value of counter when the fclosure was created. When a fclosure is funcall'ed: 1) the lisp system lambda binds the symbols in the fclosure to their values in the fclosure. 2) it continues the funcall on the functional object of the fclosure 3) finally it un-lambda binds the symbols in the fclosure and at the same time stores the current values of the symbols in the fclosure. To see what that means, let us continue the example: -> (funcall x 32) 32 -> (funcall x 21) 53 Notice that the fclosure is saving the value of the symbol 'counter'. Each time a fclosure is created, new space is allocated for saving the values of the symbols. If we executed the same fclosure function: ->(setq y (fclosure '(counter) '(lambda (val) (setq counter (+ val counter))))) fclosure[1] We now have two independent counters: -> (funcall y 2) 2 -> (funcall y 12) 14 -> (funcall x 3) 56 To summarize: (fclosure 'l_vars 'g_funcobj) l_vars is a list of symbols (not containing nil) g_funcobj is lambda expression or a symbol or another fclosure examples: (fclosure '(foo bar baz) 'plus) (fclosure '(a b) #'(lambda (x) (plus x a))) notice the #' which will make the compiler compile the lambda expression. There are time when you want to share variables between fclosures. This can be done if the fclosures are created at the time times using fclosure-list: (fclosure-list 'l_vars1 'g_funcobj1 ['l_vars2 'g_funcobj2 ... ...]) This creates a list of closures such that if a symbol appears in l_varsN and l_varsM then its value will be shared between the closures associated with g_funcobjN and g_funcobjM. example: -> (setq x (fclosure-list '(a) '(lambda (y) (setq a y)) '(c a) '(lambda () (setq c a)))) (fclosure[4] fclosure[7]) -> (funcall (car x) 123) ; set the value of a in the 1st fclosure 123 -> (funcall (cadr x)) ; read the same value in the 2nd fclosure 123 Other fclosure functions: (fclosure-alist 'c_fclosure) returns an assoc list giving the symbols and values in the fclosure (fclosurep 'g_obj) returns t iff g_obj is a fclosure (fclosure-function 'c_fclosure) returns the functional object of the fclosure Note: If a throw (or error) occurs during the evaluation of a fclosure, which passes control out of the fclosure, then current values of the symbols will not be stored. This may be a bug. We could set up an unwind-protect, but it would then take longer to funcall a fclosure. If you think an unwind protect is important, let me know. Note 2: you can also 'apply' a fclosure. From jkf Sat Oct 23 08:58:07 1982 Date: 23-Oct-82 08:57:53-PDT (Sat) From: jkf (John Foderaro) Subject: more on closures Message-Id: <8209231558.21572@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A21572; 23-Oct-82 08:58:07-PDT (Sat) To: local-lisp I sent the maryland people the flavors.usage file from mit so that they could compare their implementation with mit's. What follows is their analysis. Some of the differences between the two versions is due to different schemes for getting around the fact that franz didn't have a form of closure. RZ has indicated that now that franz has fclosures, it may be possible to use more of the 'official' lisp machine flavor code. fclosures will probably affect the maryland implementation too: Date: 22 Oct 82 15:39:18 EDT (Fri) From: Liz Allen <liz.umcp-cs@UDel-Relay> Subject: flavors To: jkf at Ucb-C70 Via: UMCP-CS; 23 Oct 82 9:09-EDT Wow, implementing closure in one day is amazing. We had thought about writing some kind of closure... We've been discussing how having closures would affect our code. It might make it easier to read and modify, but it might be less efficient. Can you tell us how your implementation works and what it looks like to a user? About the MIT implementation. Ours is probably better in a couple of respects but probably loses a couple of places, too. Pros: 1. With ours, there is no need to discard instances when redefining a flavor. The only time this would be necessary is if the instance variables change which rarely happens since methods change much more often than the instance variables. Without a structure editor, you tend to reload the file containing flavors in order to change a method. 2. We can compile files with flavors (he didn't say if you can compile MIT's Franz flavors) and when they are compiled they run *fast*. Most of the overhead occurs at combine time and compiled flavors shouldn't have to be recombined. 3. We use hunks to store instance variables (actually, an instance is a hunk whose cxr 0 is the name of the flavor and whose cxr n (> 0) are the values of instance variables). We pay a price at combine time since instance variable references in method code are replaced with cxr and rplacx calls (but MIT pays the same price in putting hash calls in the methods), but we win over MIT since the cxr calls are much faster than the hash table calls. We do have to have "ghost" methods which are copies of methods containing different cxr calls when the referenced variables of a method don't align in flavors which inherit the method. This, however, happens only rarely. 4. We handle getting and setting instance variables better than the MIT implementation -- we don't need to send a message and the syntax is much better. We recently added the functions << and >> which get and set instance variables, eg: (<< foo 'instance-var) and (>> foo 'instance-var 'value) where foo is a flavor instance. 5. Our describe function has a hook which (if the variable *debugging-flavors* is set to non-nil) allows the user to follow pointers to any instances referenced in the describe. This is done by assigning to a variable (made from its unique id) the value of the instance. Cons: 1. They implement more things from Lisp Machine flavors (like wrappers/whoppers, init-keywords), but we really haven't found the need for them. We implement less closely to LM flavors, but in a way that's better suited to Franz Lisp. 2. We didn't implement the method table as a hash table, but there's no reason why we couldn't. 3. Things we don't have, but could easily implement include: describe-method, defun-method/declare-flavor-instance-variables, and storing flavor information in hunks instead of on the property lists. 4. We don't handle method types like :and and :or. We just have primary/untyped methods and :before and :after daemons. We have people reading our documentation. After we get some feedback from them, we'll send the tape and docs to you. That should be early next week. -Liz Allen and Randy Trigg From jkf Mon Oct 25 12:56:59 1982 Date: 25-Oct-82 12:55:44-PDT (Mon) From: jkf (John Foderaro) Subject: lisp Opus 38.35, liszt 8.15 Message-Id: <8209251956.17542@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A17542; 25-Oct-82 12:56:59-PDT (Mon) To: local-lisp New features: 1) tilde-expansion: franz will now expand filenames which begin with ~ just like csh does. It will only do the expansion if the symbol tilde-expansion has a non-nil value. The default value for tilde-expansion is t. These functions do tilde expansion: If I've left any out, let me know: load, fasl, infile, outfile, fileopen, probef, cfasl, ffasl, chdir sys:access, sys:unlink [these are new functions, see below] 2) liszt will remove its temporary file if given a SIGTERM signal (SIGTERM is sent by default when you give the kill command from the shell) 3) load will now print a helpful message if an read error occurs when it is reading a file. 4) new functions: (lexpr-funcall 'function 'arg1 ... 'argn) This is a cross between funcall and apply. The last argument, argn, must be a list (possibly empty). The element of list argn are stacked and then the function is funcalled. For example: (lexpr-funcall 'list 'a 'b 'c '(d e f)) is the same as (funcall 'list 'a 'b 'c 'd 'e 'f) Also (lexpr-funcall 'list 'a 'b 'c nil) is the same as (funcall 'list 'a 'b 'c) (tilde-expand 'st_filename) returns: symbol whose pname is the filename, with a leading tilde expanded. if st_filename doesn't begin with a tilde, it just returns st_filename (username-to-dir 'st_name) returns: the home directory of the given user, if that user exists. Saves old information so doesn't have to keep searching the passwd file. Some low level system functions. These are listed here for completeness. The perform a function from the unix library (see the unix manual for details). (sys:getpwnam 'st_username) return passwd file info. (sys:access 'st_file 'x_mode) (sys:unlink 'st_file) Bug fixes: 1) patom will handle prinlevel and prinlength correctly. 2) it is now safe for an interpreted function to redefine itself. 3) the information return by 'evalframe' about a funcall'ed function is now correct. From jkf Mon Oct 25 14:57:00 1982 Date: 25-Oct-82 14:56:25-PDT (Mon) From: jkf (John Foderaro) Subject: 'if' macro: request for comments Message-Id: <8209252157.21567@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A21567; 25-Oct-82 14:57:00-PDT (Mon) To: local-lisp Would anyone object if we added a macro called 'if' to the default franz system? 'if' is a common name and I want to make sure that it doesn't break any existing code before I add it. Some background: At mit the 'if' macro is used all over the place. Its form is (if <predicate> <then-expr> [ <else-expr>]) I've always felt that macros should make the code more readable and that the 'if' macro makes code more obscure because it isn't easy to tell in complicated 'if' expressions where the <then-expr> and <else-expr>'s begin. Also, there is no provision for an 'elseif' expression. I wrote a macro called 'If' which uses keywords to separate clauses. (If <pred> then <then-expr> [elseif <pred> then <then-expr>]* [else <else-expr>]) These two macros are not incompatible. one macro could do the job of both. There is an ambigous case: (if p then x) could be (cond (p then) (t x)) or (cond (p x)) but it isn't likely that 'if' macro users would write something like that. Thus I propose that we add a macro, if, which act's like 'If' if its second arg is 'then' or like 'if' it the second arg is not 'then' and there are two or three arguments. Other cases would cause an error. From jkf Mon Oct 25 22:37:24 1982 Date: 25-Oct-82 22:37:09-PDT (Mon) From: jkf (John Foderaro) Subject: opus 38.36 Message-Id: <8209260537.1666@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A01666; 25-Oct-82 22:37:24-PDT (Mon) To: local-lisp I've added the 'if' macro to franz. If you have any objections, it is still not too late to voice them. I've also defined 'If' to be the same as 'if'. As I mentioned in my earlier request for comments, the 'if' macro is a cross between the mit version and a locally written version using keywords. The following documentation describes the various forms. As you know, you can test out the 'if' macro by using apply. for example: => (apply 'if '(if a then b c elseif d thenret else e)) (cond (a b c) (d) (t e)) ; ; This macro is compatible with both the crufty mit-version and ; the keyword version at ucb. ; ; simple summary: ; non-keyword use: ; (if a b) ==> (cond (a b)) ; (if a b c d e ...) ==> (cond (a b) (t c d e ...)) ; with keywords: ; (if a then b) ==> (cond (a b)) ; (if a thenret) ==> (cond (a)) ; (if a then b c d e) ==> (cond (a b c d e)) ; (if a then b c else d) ==> (cond (a b c) (t d)) ; (if a then b c elseif d thenret else g) ; ==> (cond (a b c) (d) (t g)) ; ; ; ; ; In the syntax description below, ; optional parts are surrounded by [ and ], ; + means one or more instances. ; | means 'or' ; <expr> is an lisp expression which isn't a keyword ; The keywords are: then, thenret, else, elseif. ; <pred> is also a lisp expression which isn't a keyword. ; ; <if-stmt> ::= <simple-if-stmt> ; | <keyword-if-stmt> ; ; <simple-if-stmt> ::= (if <pred> <expr>) ; | (if <pred> <expr> <expr>) ; ; <keyword-if-stmt> ::= (if <pred> <then-clause> [ <else-clause> ] ) ; ; <then-clause> ::= then <expr>+ ; | thenret ; ; <else-clause> ::= else <expr>+ ; | elseif <pred> <then-clause> [ <else-clause> ] From jkf Tue Oct 26 09:20:25 1982 Date: 26-Oct-82 09:20:04-PDT (Tue) From: jkf (John Foderaro) Subject: no more jkfmacs Message-Id: <8209261620.11552@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A11552; 26-Oct-82 09:20:25-PDT (Tue) To: local-lisp Since Franz now has the push, pop, if and msg macros, there is no reason for jkfmacs to exist. I've removed the code in jkfmacs and replaced it with a warning message which will be printed if you load it. If you used the jkfmacs version of 'push' you will have to go through your code and switch the order of arguments. The Franz version is (push value stack) Also, the unpush macro, defined in jkfmacs, no longer exists: just use pop with one argument. From jkf Wed Oct 27 20:35:07 1982 Date: 27-Oct-82 20:34:25-PDT (Wed) From: jkf (John Foderaro) Subject: liszt 8.16 Message-Id: <8209280335.27561@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A27561; 27-Oct-82 20:35:07-PDT (Wed) To: local-lisp Back on May 6, a modification to liszt was made which turned 'declare' into a user callable function which provided information to the compiler. The purpose of the change was to permit one to 'load' a file containing declarations, instead of 'include'ing it. It turns out that this was a bad idea since if the compiler were to evaluate an interpreted function with local declarations, it would assume that those local declarations were describing the current file being compiled. Thus declare has it old meaning: it is a no-op unless the compiler is compiling the form. If one really wants to actively declare something, we've added the function 'liszt-declare', which looks just like declare but can be evaluated within the compiler. If you are confused by all this, don't worry. There is very little chance that it will affect you. From jkf Fri Oct 29 09:34:11 1982 Date: 29-Oct-82 09:33:59-PDT (Fri) From: jkf (John Foderaro) Subject: cmacros Message-Id: <8209291634.8411@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A08411; 29-Oct-82 09:34:11-PDT (Fri) To: local-lisp A week ago, Joe Faletti mentioned that one problem with cmacros is that if you redefine a function, the cmacro property stays around and thus the redefinition of the function isn't communicate to the compiler. He suggested that whenever a function is defined (via 'def' or when fasl'ed in) any cmacro properties should be remprop'ed. I've been trying to think of an alternative to this, but I can't think of one. Unless someone has a better idea, I'll implement his suggestion. This means that if you want to define the function 'foo' and a cmacro for 'foo', the cmacro definition must appear later in the file than 'foo's definition. From jkf Fri Oct 29 10:11:36 1982 Date: 29-Oct-82 10:10:54-PDT (Fri) From: jkf (John Foderaro) Subject: LetS: An Expressional Loop Notation Message-Id: <8209291711.9176@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A09176; 29-Oct-82 10:11:36-PDT (Fri) To: local-lisp I've got a copy of a paper by Richard Waters (at mit) describing a system for writing loops in lisp (and other languages). Basically you describe the loop in functional programming terms (similar to Backus's FP, or apl) and the LetS package converts it into an iterative form for efficient execution in lisp. We don't have the LetS code here to play with, and we probably won't be able to get it for a while since our arpanet connection is hopelessly clogged for anything but tiny messages. However you might be interested in stopping by my office and looking at the paper. From jkf Fri Oct 29 12:06:47 1982 Date: 29-Oct-82 12:06:08-PDT (Fri) From: jkf (John Foderaro) Subject: Re: cmacros Message-Id: <8209291906.12141@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A12141; 29-Oct-82 12:06:47-PDT (Fri) To: baden, local-lisp In-Reply-To: Your message of 29 Oct 1982 1159-PDT (Friday) I could make it a 'Note'. I would prefer not to make it a warning because such redefinition is guaranteed to occur when the compiler compiles itself and the lisp code part of the lisp system. From fateman Sat Oct 30 09:17:49 1982 To: franz-friends Subject: fugue # 2 FUGUE Notes An occasional publication of the Franz Lisp User Group under Unix and Eunice (FUGUE) Number 2 (October, 1982) edited by Richard J. Fateman University of California Berkeley CA 94720 USA fateman@berkeley 1. Welcome! It seems about time to publish the second of these newsletters, since we have accumulated a number of new items. We would also like to relay to others such informa- tion as has been forwarded to us. The reports of projects at Berkeley (and elsewhere) may strike sympathetic chords with other research. 2. New programs 2.1. OPS-5 OPS-5 is a "production system" written by Charles Forgy of CMU. It appears to work just fine in Franz, and is in wide use. Interested persons may obtain copies of documen- tation and the program from Charles.Forgy@CMU-10A. ( Charles Forgy, Computer Science Department, Carnegie-Mellon Univer- sity, Pittsburgh, PA 15213) It is their policy to send it to anyone who wants it free of charge. 2.2. GLISP GLISP is a system which provides interesting linguistic features for generic operations and data abstraction. Writ- ten by Gordon Novak at Stanford University, it was origi- nally developed for Interlisp, but has been ported to other lisps, including Franz. 2.3. Flavors There are now two distinct implementations, apparently with identical functionally, of "flavors" as appearing in the MIT Lisp Machine software. One is described in TR-1174, ____________________ 9 UNIX, Eunice, Franz Lisp, may be trademarks of Bell Labs, SRI Int'l, and Univ. of Calif. 9 "Franz Flavors" by Richard J. Wood (Dept of C.S., Univ. of Maryland, College Pk, MD 20742). The other was written by Juan R. Loaiza of MIT, Laboratory for Computer Science. We have a copy of the latter on-line here, and expect to receive a copy of the Maryland one, shortly. Eric Cooper here at Berkeley is in charge of the flavors situation. There is an implementation of closures, mostly compati- ble with the Lisp Machine specification, announced by John Foderaro for Opus 38.33. The incompatibility is a result of what we perceive to be a high performance penalty for eso- terica. 2.4. Database Interfaces Jim Larus at UCB has cooked up interfaces to both the INGRES relational database system, and the simpler TROLL database system. These will be described in his forthcoming MS report, along with the next item. 2.5. Cursor-control and Menus Larus has provided an implementation of screen manage- ment which uses the UNIX "curses" package for primitive win- dow management. A menu-based interface has also been developed as part of this. 2.6. Vaxima and Algebraic Manipulation A new version of vaxima, the VAX version of the MACSYMA algebraic manipulation system, was released in July by UCB, incorporating some bug fixes, improved programs, and a large number of user-contributed subroutine libraries. This was made available to test-site licensees. Unfortunately, MIT has suspended new test-site licensing since about April, 1982. We hope that MIT will be liberalizing its distribu- tion policy to non-commercial sites. See the note below about MACSYMA being sold. As a counterpoint to this, UC Berkeley has received a substantial grant from the System Development Foundation for work on Mathematical Representation and Manipulation, which should result in some more advanced systems for application of computers to symbolic mathematics. Recruiting for researchers, staff, and students is underway now, and interested persons should contact Richard Fateman. 2.7. VLSI Design Rule Checker Lyra, written in Lisp by Michael Arnold, is a retarget- able, hierarchical, design rule checker for VLSI circuits. Lyra features a rule compiler (also written in Lisp of course!) which translates symbolic design rule descriptions to lisp code for checking the rules. Lyra was used for the RISC project. It is currently being used extensively at Berkeley, and will be included in the Fall-82 distribution of of the Berkeley CAD tools. For more information contact Michael Arnold or John Ousterhout at Berkeley. 2.8. Generic Arithmetic As a proposed extension to Franz arithmetic, Richard Fateman, Keith Sklower and Scott Morrison, have written a simple-minded generic arithmetic package which includes modules which can be loaded to support exact rational arith- metic, software-simulated IEEE extended arithmetic, arbi- trary precision floating point, complex, interval, and mul- tivariate polynomial. Combinations of some of these are sup- ported, although the package is as yet incomplete in some areas. The IEEE arithmetic simulation is written in C. These packages are probably not in good enough shape for casual use by others. 3. New features Various performance enhancements and bug fixes have been incorporated in versions of Franz (now on Opus 38.33 and the compiler, Liszt 8.14) These are mentioned in brief here; more details accompany updates of the system and manual included in the forthcoming Berkeley 4.2BSD UNIX dis- tribution. 3.1. Franz We added a switch to cause the evaluator to save macro expansions so they need only be expanded once. We added vector and vector-immediate data types. We rewrote showstack and backtrace so they are easier to use. We made the lisp to foreign function interface more secure. The system now allows foreign function to call lisp functions. We added closures and support flavors, features from the Lisp Machine. 3.2. Liszt Liszt will check the number of arguments to system functions and user defined functions. 9 9 Liszt supports local declarations. Liszt will automatically compile lambda expressions headed by the function `function'. Liszt supports compiler-only macros and will autoload macros if necessary. 4. MC68000 Keith Sklower and Kevin Layer have been working on the MC68000 version of Franz under the UNIX operating system (using a DUAL System 83). While the current configuration is a swapping system, the Lisp should be able to use the full address space of the CPU. We expect to have this system run- ning on the UNIX 4.2 BSD SUN software, too. The base system on the DUAL, including the interpreter, reader, bignums, fasl, works; the compiler is being perfected. 5. Other Lisps We now have, in-house tried 4 (other) VAX UNIX lisp systems: YLISP, Interlisp, PSL, and VLISP. We know that Interlisp can run also on VMS using the Eunice package. Interested parties can contact David Dyer at USC-ISI. There is also a version of lisp which runs on VMS only, namely NIL, from MIT, which appears to be undergoing limited dis- tribution. Two other lisps under development under UNIX are Yale's answer to NIL, namely "T", and Common Lisp, from CMU and friends. Counting Franz, that makes 7 lisp systems for the VAX computer line. Not counting variants on 2 operating systems. A Paen to standardization. Dick Gabriel states some useful principles for com- parisons in the conference record of the 1982 ACM Lisp and Functional Programming Conference, which was held in August. We understand he now has a collection of some 18 programs which he is continuing to time on various systems. 6. Work in Progress 6.1. BITGRAPH SUN AED-512 Greg Foster at UCB is working on raster-graphics sup- port in Franz for the 800 by 1000 b/w raster displays of the BBN Bitgraph and/or the SUN Workstation, and possibly the color 512 by 512 AED system. We are probably going to han- dle mice and Bitpad (stylus) input for pointing. There are lots of projects we hear about with similar systems, e.g. just recently from the University of Maryland, using UNIX and multiplexed files for window management of a 68000-based home-grown workstation. 6.2. RISC-LISP Yes, Reduced Instruction Set Computer fans, who else but UCB would be so bold... Carl Ponder is examining the issues involved in constructing a fast lisp interpreter and compiler for the RISC architecture. You see, we have all these chips... 7. Work Contemplated 7.1. Fast Number Compiler Undergraduate Jeff Cohen at Berkeley is starting to look at this. There are several industrial concerns that have expressed interest in using such a system, but expected it to be subsidized by someone else. 7.2. IBM Franz Even more nibbles on this one, but not yet. 8. Business News 8.1. Eunice SOLD Some of you may have heard that the Eunice software package was sold by SRI to the Wollongong Group, a UNIX sup- port group in Palo Alto. Prices range from $2k (educa- tional) to $5k (commercial). Naturally this package is of interest beyond the availability of Franz Lisp. We have not compared this product to other similar ones, but we know that TWG has been distributing a working Franz opus 38. As far as alternatives to Eunice, we are aware of a system developed at Rice University, and another by Human Computing Resources (HCR) in Toronto. We have not evaluated either of these. 8.2. MACSYMA SOLD MIT has sold exclusive rights to MACSYMA, a large alge- braic manipulation system, to Symbolics, Inc. of Cambridge Mass. This package runs in Franz Lisp, (among other Lisps) We hope that soon it will again be available to educational institutions with VAX systems either from us or Symbolics, at a nominal charge. We understand that commercial licenses (from Symbolics) for versions of MACSYMA on PDP-10s, Lisp Machines, etc. will distributed at non-nominal prices and offered with maintenance contracts. From liz.umcp-cs@UDel-Relay Tue Nov 2 00:39:57 1982 From liz.umcp-cs@UDel-Relay Mon Nov 1 17:43:52 1982 Date: 29 Oct 82 12:04:24 EDT (Fri) From: Liz Allen <liz.umcp-cs@UDel-Relay> Subject: Re: Flavor system To: ECC.MIT-MC at Ucb-C70, FRANZ-FRIENDS at Mit-Mc Cc: randy.umcp-cs at UDel-Relay In-Reply-To: Message of 25 October 1982 16:29-EDT from ECC@MIT-MC@Berkeley Via: UMCP-CS; 30 Oct 82 5:40-EDT Date: 25 October 1982 16:29-EDT From: ECC@MIT-MC@Berkeley Subject: Flavor system To: FRANZ-FRIENDS at MIT-MC Can someone give me a pointer to the Franz flavor system developed by U. Maryland? I am looking for information on how to FTP the files -- what machine, whether public, what files, etc. Since the U. of Maryland is not (yet) an Arpanet host, you can't FTP files directly from here. We are right now completing some documentation for all of our hacks -- including documentation for some recent improvements for our flavors system. When that documentation is complete, we will be ready to distribute the packages developed here. Besides flavors, this includes a top level called userexec which is based on INTERLISP's top level and a production system called YAPS similar to but more flexible than OPS5. We are supposed to become an Arpanet host in a few months... (Read open ended period of time.) Meanwhile, if you would like to get our code, mail me a tape, and I will mail it back with the code and documentation on it. I'd appreciate it if someone would volunteer to let other folks FTP the files from their machine until we do become an Arpanet host. My address is: Liz Allen Univ of Maryland Dept of Computer Science College Park MD 20783 (301) 454-4247 liz.umcp-cs@udel-relay -Liz From jkf Wed Nov 3 15:49:29 1982 Date: 3-Nov-82 15:48:50-PST (Wed) From: jkf (John Foderaro) Subject: lisp opus 38.40 Message-Id: <8210032349.16460@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A16460; 3-Nov-82 15:49:29-PST (Wed) To: local-lisp putprop will now put new properties at the head of the property list. From ecc@UCBARPA Thu Nov 4 10:28:49 1982 Date: 4-Nov-82 10:19:26-PST (Thu) From: ecc@UCBARPA (Eric C. Cooper) Subject: Lisp song Message-Id: <8210041819.24539@UCBARPA.BERKELEY.ARPA> Received: by UCBARPA.BERKELEY.ARPA (3.224 [10/16/82]) id A24537; 4-Nov-82 10:19:28-PST (Thu) Received: from UCBARPA.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A00305; 4-Nov-82 10:28:49-PST (Thu) To: local-lisp@kim [This has been forwarded from uucp through Xerox through info-lispm.] >From decvax!utzoo!utcsrgv!roderick Mon Nov 1 14:24:35 1982 Another Glitch in the Call ------- ------ -- --- ---- (Sung to the tune of a recent Pink Floyd song.) We don't need no indirection We don't need no flow control No data typing or declarations Hey! Did you leave the lists alone? Chorus: All in all, it's just a pure-LISP function call. We don't need no side effect-ing We don't need no scope control No global variables for execution Hey! Did you leave those args alone? (Chorus) We don't need no allocation We don't need no special nodes No dark bit-flipping in the functions Hey! Did you leave the bits alone? (Chorus) We don't need no compilation We don't need no load control No link edit for external bindings Hey! Did you leave that source alone? (Chorus, and repeat) From jkf Sat Nov 13 20:53:41 1982 Date: 13-Nov-82 20:53:16-PST (Sat) From: jkf (John Foderaro) Subject: lisp opus 38.41 Message-Id: <8210140453.490@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.222 [10/13/82]) id A00490; 13-Nov-82 20:53:41-PST (Sat) To: local-lisp added functions: (remq 'g_val 'l_list) - just like remove but uses eq instead of equal (command-line-args) - returns a list of the command line arguments when lisp was started. This function will return only those arguments typed by the user, even if the lisp was started with the autorun feature (liszt -r). (sys:gethostname) - returns the name of the machine. (status domain) - returns 'ucb' here. From Paul.Rosenbloom@CMU-CS-G@CMU-CS-A Sun Nov 28 08:53:39 1982 From Paul.Rosenbloom@CMU-CS-G@CMU-CS-A Sun Nov 28 08:38:06 1982 Mail-From: CMUFTP host CMU-CS-G received by CMU-10A at 28-Nov-82 11:48:21-EST Date: 28 Nov 1982 11:47:28-EST From: Paul.Rosenbloom at CMU-CS-G at CMU-CS-A Subject: (random) problems I am having two problems using (random) in Franz lisp. The first problem is that I can't find any way to set the seed. Every time I enter lisp, the generator is in the same state. I have had to resort to cfasling a c procedure that calls srand() (as (random) seems to be defined in c by a call on rand()). Is there a way to do this within lisp? The other problem is more serious. The generator seems to generate tight cycles for (at least) arguments that are small powers of 2. For example, repeatedly executing (random 2) yields the sequence 01010101..., and (random 4) yields 01230123.... These sequences apparently occur no matter to what value I set the seed. Does anyone one know what I could be doing wrong, or have a working random number generator? From tim.unc@UDel-Relay Sun Nov 28 20:44:24 1982 From tim.unc@UDel-Relay Sun Nov 28 20:27:43 1982 Date: 28 Nov 82 22:40:14 EST (Sun) From: Tim Maroney <tim.unc@UDel-Relay> Subject: rng To: franz-friends at Ucb-C70 Via: UNC; 28 Nov 82 23:38-EST To the person who asked about random number generators and deficiencies in (random) [I can't write mail to you for some reason]: You're not doing anything wrong; that's the way the sucker works. One good way to get random numbers is to do the syscall that gets you the number of seconds since whenever-it-is, and use the mod function. This is especially good for getting a random one or zero, by using the evenp function. Tim Maroney tim@unc@udel-relay From jkf Tue Nov 30 09:21:10 1982 Date: 30-Nov-82 09:21:10-PST (Tue) From: jkf (John Foderaro) Subject: opus 38.42 Message-Id: <8210301721.11699@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.255 [11/28/82]) id AA11699; 30-Nov-82 09:21:10-PST (Tue) To: local-lisp added: (sys:link 'oldname 'newname) that what the ln program does. changed: the order of arguments to the vset functions is now: (vset 'vector 'index 'value). [This shouldn't affect anyone since vectors haven't been officially released yet and won't be until I make one more major modification] setf now knows about vectors. You can say (setf (vref 'vector 'index) 'value) and not have to worry about the order of arguments to vset. From jkf Tue Nov 30 10:42:00 1982 Date: 30-Nov-82 10:42:00-PST (Tue) From: jkf (John Foderaro) Subject: Re: opus 38.42 Message-Id: <8210301842.13143@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.255 [11/28/82]) id AA13143; 30-Nov-82 10:42:00-PST (Tue) To: jeffc, local-lisp In-Reply-To: Your message of 30 Nov 1982 1036-PST (Tuesday) It can't do symbolic links (I've only been adding system calls that I had a use for). setf is a generalized setq. The target can be an expression which locates a value. setf figures out how to store in the target. for example: (setf x 3) == (setq x 3) (setf (car x) 3) == (rplaca x 3) (setf (get foo 'bar) 3) == (putprop foo 3 'bar) the target must be something it has been 'taught' to understand, or it can be a macro, in which case setf macro-expands it and takes another look. The setf macro (and a list of targets it knows about is in /usr/lib/lisp/common2.l) From jkf@UCBKIM Wed Dec 1 09:17:12 1982 From jkf@UCBKIM Wed Dec 1 09:13:23 1982 Date: 1-Dec-82 09:13:03-PST (Wed) From: jkf@UCBKIM (John Foderaro) Subject: Random Numbers in Franz Message-Id: <8211011713.3615@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.255 [11/28/82]) id AA03615; 1-Dec-82 09:13:03-PST (Wed) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.227 [10/22/82]) id A18406; 1-Dec-82 09:13:23-PST (Wed) To: franz-friends@berkeley Date: 29-Nov-82 15:56:09-PST (Mon) From: alice!sola!mitch Subject: Random Numbers in Franz To: alice!ucbvax!franz-friends In general, it is very bad practice to compute a random number between 0 and n by any expression such as (mod (random) n). In fact, Franz's random function does exactly that, returning the number generated by the C function rand(3) modulo n. This technique uses only the rightmost bits of successive calls to rand, and the righmost n bits of congruential sequences (like that returned by rand(3)) have a period of AT MOST 2**n (See Knuth vol.2 p. 12). So using the rightmost two bits will indeed give you sequences of at most period 4. (If your lisp doesn't have this behavior, you're not using the standard rand.) A better way to do it is to use the high order bits, by dividing the entire range up into n pieces and then seeing where you fall. (This method is biased if n is of the same order as the range, though.) The code I use is: (or (getd '$old-random) (putd '$old-random (getd 'random))) (defun random n (cond ((eq n 0) ($old-random)) ((fix (quotient (boole 1 ($old-random) #o 7777777777) (quotient #o 7777777777 (arg 1))))))) Mitch Marcus From jkf Thu Dec 2 08:04:37 1982 Date: 2-Dec-82 08:04:37-PST (Thu) From: jkf (John Foderaro) Subject: Franz Lisp distribution Message-Id: <8211021604.14414@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.255 [11/28/82]) id AA14414; 2-Dec-82 08:04:37-PST (Thu) To: franz-friends, net-lang-lisp@k Franz Lisp Distribution This note describes our distribution policy for Franz Lisp. What is being distributed: We distribute only source code in order to keep the distribution small and relatively Unix independent. Makefiles are provided to build the entire lisp system from source, even if you don't have a version of lisp running already. This process takes about 3 cpu hours on a Vax 780. [This version for the Vax only, a 68000 version is being worked on. Contact ucbkim.sklower@berkeley or ucbkim.layer@berkeley] The following source is provided: lisp interpreter, compiler (liszt), cross reference program (lxref), lisp manual, and other utility programs: trace, step, debug, cmu library functions, (and other minor ones), and these packages from the MIT lisp library: defstruct, loop, flavors. [These programs are provided as a convenience to those who can't access the arpanet and copy them. There is no documentation for them in the Franz Lisp manual. The best source of documentation is the Lisp Machine manual (available from MIT, Symbolics or LMI)] Regarding Flavors: there are two implementations of flavors for Franz Lisp, one from MIT (contact person Richard Zippel (rz@mit-mc)) and one from the University of Maryland (contact person Liz Allen (liz.umcp-cs@udel-relay)). Neither implementation is exactly like flavors on the Lisp Machine (due to differences between Lisp Machine lisp and Franz Lisp), and the implementations differ from each other. We incorporated the Mit version into the standard distribution because the high bandwidth between here and MIT will insure that it keeps up to date with the current Franz. This is not to imply that it is the better implementation. We haven't had enough experience with flavors to judge. Those seriously interested in Flavors should contact Liz Allen and ask for the Tech Report on the Univ Of Maryland Flavors system. What is the form of the distribution: The files are packaged in a giant (2.1Mbyte) shell script. Running this shell script through 'sh' will result in a directory tree. A ReadMe file in the current directory will contain instructions on building the lisp system. The shell script is broken into a number of smaller files. The current distribution looks like: % ls total 2092 195 opus38.40.aa 195 opus38.40.ae 195 opus38.40.ai 195 opus38.40.ab 195 opus38.40.af 195 opus38.40.aj 195 opus38.40.ac 195 opus38.40.ag 142 opus38.40.ak 195 opus38.40.ad 195 opus38.40.ah The '38.40' means Opus 38, minor version 40. These numbers may be different by the time you get your distribution. In order to extract the lisp files from this shell script, you need only type: cat * | sh To get a copy of the distribution: The distribution may be obtained either using FTP from an arpanet site, or on a magnetic tape through the U.S Mail. Arpanet: The files are stored on the ucb-c70 (NCP) arpanet host in the directory /users/lisp/lispuser. If you have an account on the ucb-c70, you are free to take FTP a copy of these files. If you do not have an account on the ucb-c70, send me (jkf@berkeley) a message and I will set up a temporary account for you. If you are on a TCP host, write me and we will set up an account on one of our Vax's for you to FTP the files. Eventually we will have an anonymous login on a TCP machine. Mag Tape: In order to get a copy of the distribution mailed to you, send a check to cover our tape copying and mailing costs (fees are listed below). We will purchase the mag tape and you are free to keep it. Please do NOT send us a tape. Fees: $50 - distribution tape mailed 3rd class add $10 - a copy of the Lisp Manual (we will only send one copy, you are free to photocopy it) add $7 - send tape via 1st class mail. -or- $15 - for just a copy of the Lisp Manual The address to send checks to is Keith Sklower EECS/Computer Science Division 524 Evans Hall University of California Berkeley, CA 94720 All checks should be made out to "Regents, University of California." We require pre-payment. We will not invoice or process purchase orders. Disclaimers: This distribution works on the latest versions of Unix running at Berkeley (4.1a). We can't guarantee that it will work on older versions (although, if you are running 4.1, it is almost certain that it will work, but we have not verified it). VMS users who are using a typical Unix compatibility package will probably not be able to build a lisp from this distribution unless they know a great deal about VMS and their compatibility package. At least one package (Eunice) supports Franz at this time. Redistribution: If you get a copy of the distribution, you are free to give it to other people. We appreciate being informed of new sites so they can be put on a mailing list (electronic and conventional). This list is used to announce new releases. To be put on this list, send U.S. Mail to Keith Sklower (address above) or to franz-friends-request@berkeley or ucbvax!franz-friends-request From jkf Mon Dec 6 08:50:45 1982 Date: 6-Dec-82 08:50:45-PST (Mon) From: jkf (John Foderaro) Subject: opus 38.43 Message-Id: <8211061650.12951@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA12951; 6-Dec-82 08:50:45-PST (Mon) To: local-lisp The size of vectors is now recorded in bytes rather than longwords. We've imported a few more commands to deal with fclosures. (symeval-in-fclosure 'fclosure 'symbol) (set-in-fclosure 'fclosure 'symbol 'value) (let-fclosed vars function) From jkf Mon Dec 13 10:35:43 1982 Date: 13-Dec-82 10:35:43-PST (Mon) From: jkf (John Foderaro) Subject: enhancemants to trace Message-Id: <8211131835.12160@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA12160; 13-Dec-82 10:35:43-PST (Mon) To: local-lisp The function 'retrace' will insure that all functions which should be traced are indeed traced. This will solve the problem of reloading a file whose functions are traced. After you load a file, you can type (retrace) and those functions which became untraced during the loading process, will be traced again. The top-level-print and top-level-read variables will now take effect within a trace break. From jkf Tue Dec 14 12:40:41 1982 Date: 14-Dec-82 12:40:41-PST (Tue) From: jkf (John Foderaro) Subject: Re: #!, exec and lisp Message-Id: <8211142040.10379@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA10379; 14-Dec-82 12:40:41-PST (Tue) To: lime!burdvax!puder Cc: franz-friends In-Reply-To: Your message of 13-Dec-82 14:03:23-PST (Mon) It is easy to make #! do a zapline. If you have a recent version of lisp, just execute: (defsharp ! (x) (zapline)) (this could be put in your .lisprc, if you don't want to affect other people). The problem with adding this to Franz by default is that the sharpsign macro is shared by a number of lisps and few of them run under Unix. Therefore, few other lisps are going to want #! to be zapline. Regarding the -f switch: The -f switch is used to communicate between the bootstrap at the beginning of a fasl file and the lisp interpreter. It wasn't meant as a general 'fasl this file' switch for users to make use of. The choice of '-f' was bad, it should have been something more unique like '-- autorun' so that a user would be unlikely to type it. We have avoided assigning meanings to switches on lisp's command line because we want to give each user the opportunity to assign whatever meaning he wants to whatever switch he wants. It isn't difficult to write a program to scan the command line. Re: The (setq searchlist (cvtsearchpathtolist (getenv 'PATH))) would not be necessary, because the exec syscall supplies the full path name, because the shell has already done the path searching on the command name. The only place that might have to be searched is the current directory. This isn't true. (argv 0) is the command that you typed, not the full path name to the command. Only by prepending all the directories in the search list can you find the location of the command. ---john foderaro From jkf Mon Jan 10 15:04:02 1983 Date: 10-Jan-83 15:04:02-PST (Mon) From: jkf (John Foderaro) Subject: opus 38.45 Message-Id: <8300102304.19240@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA19240; 10-Jan-83 15:04:02-PST (Mon) To: local-lisp showstack will again report correctly for compiled calls if the transfer tables are unlinked (status translink nil). From jkf Mon Jan 10 19:46:06 1983 Date: 10-Jan-83 19:46:06-PST (Mon) From: jkf (John Foderaro) Subject: opus 38.46 Message-Id: <8300110346.24831@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA24831; 10-Jan-83 19:46:06-PST (Mon) To: local-lisp This version incorporates some fixes from mit. You shouldn't notice any differences but if you do, let me know. From jkf Wed Jan 12 09:03:32 1983 Date: 12-Jan-83 09:03:32-PST (Wed) From: jkf (John Foderaro) Subject: opus38.47 Message-Id: <8300121703.1981@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA01981; 12-Jan-83 09:03:32-PST (Wed) To: local-lisp The setf macro will now handle all car and cdr forms (i.e. c{ad}+r). Thanks to peter norvig for this. There is a new macro called 'defvar'. It is used to declare special variables and optionally to give them an initial value. It is used at top level in a file (outside of defuns). forms: (defvar foo) ; declares foo to be special (defvar bar 3) ; declares bar to be special and when this file is read in ; bar will be given the value 3 if it is unbound. An advantage of '(defvar foo)' over '(declare (special foo))' is that if a file containing defvars is loaded (or fasl'ed) in during compilation, the variables mentioned in the defvar's will be declared special. The only way to have that effect with '(declare (special foo))' is to 'include' the file. There is a new macro, 'environment', which can be used at the beginning of a file to specify what sort of environment this file needs in order to be compiled or run. For example: (environment (compile eval) (files mymacros othermacros) (compile) (syntax maclisp)) says that when compiling or loading into the interpreter, the files mymacros and othermacros should be loaded (if they aren't loaded already). When compiling, the maclisp syntax should be used. The general form of 'environment' is: (environment when1 what1 when2 what2 ... ... whenN whatN) the when's are a subset of (eval compile load), and the symbols have the same meaning as they do in 'eval-when'. The what's are either (files file1 file2 ... fileN) insure that the named files are loaded. To see if fileX is loaded, it looks for a 'version' property under fileX's property list. Thus to prevent multiple loading, you should put (putprop 'myfile t 'version) at the end of myfile.l (syntax type) type is either maclisp, intlisp, ucilisp, franzlisp This sets the syntax correctly. There are additional macros to set of standard environments: (environment-maclisp) sets up the maclisp environment. This is what you would get by using the -m switch to liszt. (environment-lmlisp) sets up the lisp machine environment. This is like maclisp but it has additional macros. It is possible to add when's and what's to the specialized environments, e.g. (environment-maclisp (compile eval) (files foo bar)) From norvig Wed Jan 12 13:12:45 1983 To: jkf local-lisp Subject: defvar Shouldn't defvar take any number of arguments, like setq? As it is, (defvar a 1 b 2) sets a to 1, but ignores the other arguments. From fateman Wed Jan 12 13:23:08 1983 To: jkf local-lisp norvig Subject: Re: defvar I suspect the extra arguments to defvar are used in other systems for storage of documentation strings in appropriate places. E.g. (defvar dozen 12 "initially 12 except in the baker system when it is 13") causes some association with defvar and documentation should be put on a file. From jkf Wed Jan 12 14:25:02 1983 Date: 12-Jan-83 14:25:02-PST (Wed) From: jkf (John Foderaro) Subject: Re: defvar Message-Id: <8300122225.13079@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA13079; 12-Jan-83 14:25:02-PST (Wed) To: norvig, local-lisp In-Reply-To: Your message of 12 Jan 1983 1311-PST (Wednesday) fateman is correct that there is an optional third argument for documentation. We don't want to add multiple arguments because defvar it will mean that code we write here can't be transported to other lisp which only expect one defvar argument. From jkf Thu Jan 13 09:49:13 1983 Date: 13-Jan-83 09:49:13-PST (Thu) From: jkf (John Foderaro) Subject: liszt 8.17 Message-Id: <8300131749.331@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00331; 13-Jan-83 09:49:13-PST (Thu) To: local-lisp The vector reference functions are open coded. These are vref, vrefi-byte, vrefi-word, vrefi-long From G:alpines Thu Jan 13 20:31:34 1983 Date: 13 Jan 1983 20:24-PST From: alpines@G (Harry Weeks at Vax-Populi) Subject: Franz on 68000's Message-Id: <83/01/13 2024.733@Vax-Populi> Received: by UCBVAX.BERKELEY.ARPA (3.293 [1/9/83]) id AA12970; 13-Jan-83 20:28:37-PST (Thu) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA14908; 13-Jan-83 20:31:34-PST (Thu) To: franz@BERKELEY Cc: franz-friends@BERKELEY >Date: 13 Jan 1983 20:01-PST From: G.alpines at Berkeley (Harry Weeks at Vax-Populi) Subject: Franz on 68000's. To: franz-friends-request@Berkeley Message-Id: <83/01/13 2001.733@Vax-Populi> Please put me on your mailing list for information concerning implementation of Franz, esp. on 68000's, but I'd like to keep informed generally as well. Thanks. Harry Weeks Bytek 1730 Solano Avenue Berkeley, CA 94707 (415) 527-1157 From jkf Sun Jan 16 21:22:54 1983 Date: 16-Jan-83 21:22:54-PST (Sun) From: jkf (John Foderaro) Subject: change to lisptags program Message-Id: <8300170522.23656@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA23656; 16-Jan-83 21:22:54-PST (Sun) To: local-lisp lisptags will now surround the search string with /'s instead of ?'s in order to be compatible with ctags. Both types should work with vi, emacs people will probably have to make a minor modification to their tags.ml file. My version in ~jkf/elib/tags.ml. From jkf Tue Jan 18 16:43:23 1983 Date: 18-Jan-83 16:43:23-PST (Tue) From: jkf (John Foderaro) Subject: lisp opus 38.48, liszt 8.19 Message-Id: <8300190043.10935@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA10935; 18-Jan-83 16:43:23-PST (Tue) To: local-lisp This is a long message so I'll put the most important thing first, in case you choose not to read the rest of the message: *** object files generated by liszt 8.19 will not run in any lisp *** older than 38.48. Object files which were generated by *** liszt's before 8.19 will continue to work in the new lisp. There were two major changes to lisp and liszt: 1) compiled functions will test at runtime to make sure that they are passed the correct number of arguments. 2) the lambda list keywords &optional, &rest and &aux are open compiled in an efficient manner. I'll refresh your memory on what the possible forms are for the & keywords: the formal parameter list of a def has this form ( required-args [ &optional optional-arguments ] [ &rest rest-argument ] [ &aux aux-arguments ]) as in this example which shows all possible forms: (def foo (lambda (a b &optional c (d 23 d-p) (dd (bar)) &rest e &aux (f 12) g) (compute))) the meaning and forms of the various parts of the formal parameter list are: required-args: a sequence of n (zero or more) symbols which will be bound to the first n actual arguments. optional-args: a sequence of m (zero or more) symbols which will be bound to the next m actual arguments if they are present, or to default values. the forms of an optional argument are: foo - bind foo to the argument if it present, otherwise bind it to nil (foo (expr)) - bind foo to the argument if it is present, otherwise evaluate (expr) and bind foo to the result. (foo (expr) foo-p) - bind foo to the argument if it is present, otherwise evaluate (expr) and bind foo to the result. Also, bind foo-p to t if the argument is present, otherwise bind foo-p to nil. foo-p will be treated like an &aux variable (see below) but it should NOT be declared in the &aux list! rest-arg : a single symbol which will be bound to a list of the rest of the arguments. This list is cons'ed up each time the function is called. aux-args : these args are just like arguments to let or prog within the function body so this & keyword isn't really necessary (but there are few things in lisp that really are necessary). the forms of the aux arg are: foo - bind foo to nil (foo (expr)) - evaluate (expr) and bind foo to the result. The compiler understands the &keywords but the interpreter does not. 'def' will convert a form with &keywords to a lexpr which is almost equivalent. The differences are: The interpreted form, being a lexpr, is allowed to use the 'arg' function. The compiled form, even with optional args, is not a lexpr and thus 'arg' is illegal. The order that &aux variables are lambda bound is slightly different between interpreted and compiled code. As long as default expressions reference no formal parameters after them in the formal parameter list, there should be no problems. The interpreted version will not check for the correct number of arguments. Local functions cannot have &keywords. If you have any questions on this, send me mail. This change should only break functions which expect a variable number of argument and which don't declare the fact using &optional programs. There may be, of course, implementation errors. If you notice anything unusual please let me know right away. The old compiler will be in /usr/ucb/oliszt for a while. From layer Thu Jan 20 01:55:55 1983 Date: 20-Jan-83 01:55:55-PST (Thu) From: layer (Kevin Layer) Subject: liszt 8.20 Message-Id: <8300200955.17788@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA17788; 20-Jan-83 01:55:55-PST (Thu) To: local-lisp Phone: (415) 652-2405 There are now three new command line features for liszt: 1. -E <s-expr>, where <s-expr> will be evaluated before compilation starts. For example, the setting of constants can be done in this way: liszt -E '(setq foobar "***foobar-string***")' foobar.l and in the file being compiled, foobar is accessed as '#.foobar. 2. -I <include-file>, where <include-file> will be loaded (via load) before compilation starts. 3. A combination of the -S and -o switches will set the .s file, as in: liszt -S -o foo.vax.s foo.l where previously, the -S determined the name of the .s file (foo.s in the above example). From jkf Thu Jan 20 19:42:38 1983 Date: 20-Jan-83 19:42:38-PST (Thu) From: jkf (John Foderaro) Subject: some mods to liszt 8.20 Message-Id: <8300210342.7334@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA07334; 20-Jan-83 19:42:38-PST (Thu) To: local-lisp the -E and -I flags are now -e and -i there may be more than one -i flag given on the command line. From fateman Thu Jan 20 20:20:31 1983 To: local-lisp Subject: fame, if not fortune In the latest Scientific American, Feb. 1983, Hofstader's column is the first of several on the programming language "lisp". He mentions the particular dialect he is using .... Franz ! From wilensky Thu Jan 20 20:57:27 1983 Date: 20-Jan-83 20:57:27-PST (Thu) From: wilensky (Robert Wilensky) Subject: Re: fame, if not fortune Message-Id: <8300210457.8824@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA08824; 20-Jan-83 20:57:27-PST (Thu) To: fateman, local-lisp In-Reply-To: Your message of 20 Jan 1983 2019-PST (Thursday) On the other hand, being referenced by Hofstader is a dubious honor. From UCBKIM:jkf Fri Jan 21 08:15:04 1983 Date: 21-Jan-83 08:11:01-PST (Fri) From: UCBKIM:jkf (John Foderaro) Subject: test message, ignore Message-Id: <8300211611.18650@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA18650; 21-Jan-83 08:11:01-PST (Fri) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA24887; 21 Jan 83 08:09:27 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA18766; 21-Jan-83 08:15:04-PST (Fri) To: franz-friends@BERKELEY This will give our mailer a chance to tell me how many of our franz friends are no longer reachable. From JTSCHUDY@USC-ISIE Sat Jan 22 16:42:19 1983 Date: 22 Jan 1983 1634-PST From: JTSCHUDY@USC-ISIE Subject: MAILINGLIST ADDITION Message-Id: <8300230037.1747@UCBVAX.BERKELEY.ARPA> Received: from USC-ISIE by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA01747; 22 Jan 83 16:37:17 PST (Sat) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA18903; 22-Jan-83 16:42:19-PST (Sat) To: franz-friends@BERKELEY Hi! My name is Jim. I am presently attending the Naval Post Graduate School in Monterey California. I am in the Air Force enrolled in a DOD sponsored graduate degree in Command Control and Communications Systems Technology. i would like to be added to your mailing list. My net address is JTSCHUDY at ISIE. Thanks - Jim. ------- From jkf Sat Jan 22 17:38:41 1983 Date: 22-Jan-83 17:38:41-PST (Sat) From: jkf (John Foderaro) Subject: opus 38.49 Message-Id: <8300230138.20020@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA20020; 22-Jan-83 17:38:41-PST (Sat) To: local-lisp A longstanding bug in the determination of the number of free dtpr objects has been found and fixed. The effect of this bug was that the function which is responsible for allocating more memory pages didn't allocate enough dtpr pages because it thought that there were a large number of cells free. From MCLINDEN@RUTGERS Mon Jan 24 10:33:14 1983 Date: 24 Jan 1983 1324-EST From: Sean McLinden <MCLINDEN@RUTGERS> Subject: Franz Lisp and floating point accelerator Message-Id: <8300241825.19602@UCBVAX.BERKELEY.ARPA> Received: from RUTGERS by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA19602; 24 Jan 83 10:25:06 PST (Mon) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA27143; 24-Jan-83 10:33:14-PST (Mon) To: franz-friends@UCBVAX Has anyone determined if a floating point accelerator speeds up Vax Franz Lisp jobs in any significant fashion? Pointers would be appreciated. Sean McLinden Decision Systems Lab ------- From mike@rand-unix Mon Jan 24 18:47:03 1983 Date: Monday, 24 Jan 1983 15:34-PST From: mike@RAND-UNIX Subject: emacs interface to franz? Message-Id: <8300250008.58@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00058; 24 Jan 83 16:08:36 PST (Mon) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00921; 24-Jan-83 18:47:03-PST (Mon) To: franz-friends@BERKELEY Does anyone have a snazzy interface to emacs for franz? Thanks, Michael From @udel-relay.ARPA,@UDel-Relay:Tim@UPenn.UPenn Tue Jan 25 16:29:19 1983 Date: 25 Jan 1983 9:58-EST From: Tim Finin <Tim.UPenn@UDel-Relay> Subject: emacs interface to franz? Message-Id: <8300260022.29320@UCBVAX.BERKELEY.ARPA> Received: from udel-relay.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA29320; 25 Jan 83 16:22:57 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA01561; 25-Jan-83 16:29:19-PST (Tue) Return-Path: <Tim@UPenn.UPenn@UDel-Relay> To: mike@Rand-Unix Cc: franz-friends@BERKELEY Via: UPenn; 25 Jan 83 19:21-EST We have a simple interface from Franz to Emacs, but I much prefer to go the other way, i.e. run Franz as a inferior job under Emacs. I believe there are several Emacs packages which allow one to run inferior jobs in an Emacs window (I have my own which is, unfortunately totally undocumented). Some of the benefits of this set up include: - one has all of the text editing functions available in Emacs - one has many lisp-based editing functions available in Emacs (thru mock-lisp packages like electriclisp) - one has a history of the session in the editing buffer - one has an environment which supports multiple concurrent processes running in seperate windows. - it is very easy to experiment with new interface features such as symbol completion and re-evaluation of previously issued commands Tim From CARR@UTAH-20 Fri Jan 28 08:19:08 1983 Date: 28 Jan 1983 0912-MST From: Harold Carr <CARR@UTAH-20> Subject: franz distribution Message-Id: <8300281615.20646@UCBVAX.BERKELEY.ARPA> Received: from UTAH-20 by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA20646; 28 Jan 83 08:15:18 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA16991; 28-Jan-83 08:19:08-PST (Fri) To: franz-friends@UCBVAX What is the distribution policy? I work for a company that has opus 36 and is now currently running opus 37. Here at the University of Utah we are running opus 38.04. Is it OK to make a tape of the University's 38.04 to bring my company more up to date? Do I have to make it more formal by signing a transfer agreement or by obtaining the release directly from Berkeley? Thanks in advance, Harold Carr CARR@UTAH-20 ------- From UCBKIM:jkf Fri Jan 28 15:09:32 1983 Date: 28-Jan-83 08:34:33-PST (Fri) From: UCBKIM:jkf Subject: Re: franz distribution Message-Id: <8300281634.17319@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA17319; 28-Jan-83 08:34:33-PST (Fri) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA02275; 28 Jan 83 14:58:37 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00402; 28-Jan-83 15:09:32-PST (Fri) To: CARR@UTAH-20 Cc: franz-friends@UCBVAX In-Reply-To: Your message of 28 Jan 1983 0912-MST Here is our current distribution policy. This differs a bit from the one sent out a month ago [in particular, we now have anonymous ftp] -[Fri Jan 28 08:31:45 1983 by jkf]- Franz Lisp Distribution This note describes our distribution policy for Franz Lisp. What is being distributed: We distribute only source code in order to keep the distribution small and relatively Unix independent. Makefiles are provided to build the entire lisp system from source, even if you don't have a version of lisp running already. This process takes about 3 cpu hours on a Vax 780. [This version for the Vax only, a 68000 version is being worked on. Contact ucbkim.sklower@berkeley or ucbkim.layer@berkeley] The following source is provided: lisp interpreter, compiler (liszt), cross reference program (lxref), lisp manual, and other utility programs: trace, step, debug, cmu library functions, (and other minor ones), and these packages from the MIT lisp library: defstruct, loop. [These programs are provided as a convenience to those who can't access the arpanet and copy them. There is no documentation for them in the Franz Lisp manual. The best source of documentation is the Lisp Machine manual (available from MIT, Symbolics or LMI)] Regarding Flavors: there are two implementations of flavors for Franz Lisp, one from MIT (contact person Richard Zippel (rz@mit-mc)) and one from the University of Maryland (contact person Liz Allen (liz.umcp-cs@udel-relay)). Neither implementation is exactly like flavors on the Lisp Machine (due to differences between Lisp Machine lisp and Franz Lisp), and the implementations differ from each other. The MIT version cannot be distributed by us (yet) due to licensing problems. If you have a Lisp Machine Source license from Symbolics, you should be able to get a copy from MIT. For a Tech Report on Maryland flavors, write to Liz Allen. What is the form of the distribution: The files are packaged in a giant (2.1Mbyte) shell script. Running this shell script through 'sh' will result in a directory tree. A ReadMe file in the current directory will contain instructions on building the lisp system. The shell script is broken into a number of smaller files. The current distribution looks like: total 2089 489 -rw-r--r-- 1 jkf 500003 Jan 26 11:33 opus38.50.aa 489 -rw-r--r-- 1 jkf 500002 Jan 26 11:35 opus38.50.ab 489 -rw-r--r-- 1 jkf 500047 Jan 26 11:37 opus38.50.ac 489 -rw-r--r-- 1 jkf 500007 Jan 26 11:38 opus38.50.ad 133 -rw-r--r-- 1 jkf 136038 Jan 26 11:39 opus38.50.ae The '38.50' means Opus 38, minor version 50. These numbers may be different by the time you get your distribution. In order to extract the lisp files from this shell script, you need only type: cat * | sh To get a copy of the distribution: The distribution may be obtained either using FTP from an arpanet site, or on a magnetic tape through the U.S Mail. Arpanet: The files are stored on the arpanet host 'ucb-vax' [ if you have an out of date host table, it may be called 'ucb-monet' or 'ucb-ingres'. Its internet number is 10.2.0.78]. You can login as 'anonymous'. Use your name as the password. The files are in the subdirectory pub/lisp. For those who have accounts on ucb-vax, the full path is ~ftp/pub/lisp. Mag Tape: In order to get a copy of the distribution mailed to you, send a check to cover our tape copying and mailing costs (fees are listed below). We will purchase the mag tape and you are free to keep it. Please do NOT send us a tape. Fees: $50 - distribution tape mailed 3rd class add $10 - a copy of the Lisp Manual (we will only send one copy, you are free to photocopy it) add $7 - send tape via 1st class mail. -or- $15 - for just a copy of the Lisp Manual The address to send checks to is Keith Sklower EECS/Computer Science Division 524 Evans Hall University of California Berkeley, CA 94720 All checks should be made out to "Regents, University of California." We require pre-payment. We will not invoice or process purchase orders. Disclaimers: This distribution works on the latest versions of Unix running at Berkeley (4.1a). We can't guarantee that it will work on older versions (although, if you are running 4.1, it is almost certain that it will work, but we have not verified it). VMS users who are using a typical Unix compatibility package will probably not be able to build a lisp from this distribution unless they know a great deal about VMS and their compatibility package. At least one package (Eunice) supports Franz at this time. Redistribution: If you get a copy of the distribution, you are free to give it to other people. We appreciate being informed of new sites so they can be put on a mailing list (electronic and conventional). This list is used to announce new releases. To be put on this list, send U.S. Mail to Keith Sklower (address above) or to franz-friends-request@berkeley or ucbvax!franz-friends-request From Kim:fateman Sun Jan 30 02:12:28 1983 Date: 28 Jan 83 08:32:08 PST (Fri) From: Kim:fateman (Richard Fateman) Subject: Re: franz distribution Message-Id: <8300281631.21039@UCBVAX.BERKELEY.ARPA> Received: by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA21039; 28 Jan 83 08:31:58 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA10132; 30-Jan-83 02:12:28-PST (Sun) To: CARR@UTAH-20 Cc: franz-friends@ucbvax Our policy is that you may move copies of Franz elsewhere without notifying us. We continue to be interested in sharing anything you or your company wish to provide us, in suggestions, programs, etc. From UCBCAD:pettengi Sun Jan 30 02:33:52 1983 Date: 28-Jan-83 10:54:51-PST (Fri) From: UCBCAD:pettengi (Rob Pettengill) Subject: emacs interface to franz? Message-Id: <8300281854.26156@UCBCAD.BERKELEY.ARPA> Received: by UCBCAD.BERKELEY.ARPA (3.256 [12/5/82]) id AA26156; 28-Jan-83 10:54:51-PST (Fri) Received: from UCBCAD.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00374; 28 Jan 83 12:53:44 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA10578; 30-Jan-83 02:33:52-PST (Sun) To: mike@rand-unix, franz-friends@ucbvax Cc: pettengi@UCBCAD While I was at TI I used a very nice interface that let one start up a Franz lisp inside an Emacs window. It came from SRI when we got Eunice to run under our VMS. Try Kashtan@SRI-AI. Rob Pettengill E-Systems, Dallas, Tx. From UCBKIM:jkf Sun Jan 30 02:44:27 1983 Date: 28-Jan-83 08:34:33-PST (Fri) From: UCBKIM:jkf (John Foderaro) Subject: Re: franz distribution Message-Id: <8300281634.17319@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA17319; 28-Jan-83 08:34:33-PST (Fri) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA02275; 28 Jan 83 14:58:37 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA10772; 30-Jan-83 02:44:27-PST (Sun) To: CARR@UTAH-20 Cc: franz-friends@UCBVAX In-Reply-To: Your message of 28 Jan 1983 0912-MST Here is our current distribution policy. This differs a bit from the one sent out a month ago [in particular, we now have anonymous ftp] -[Fri Jan 28 08:31:45 1983 by jkf]- Franz Lisp Distribution This note describes our distribution policy for Franz Lisp. What is being distributed: We distribute only source code in order to keep the distribution small and relatively Unix independent. Makefiles are provided to build the entire lisp system from source, even if you don't have a version of lisp running already. This process takes about 3 cpu hours on a Vax 780. [This version for the Vax only, a 68000 version is being worked on. Contact ucbkim.sklower@berkeley or ucbkim.layer@berkeley] The following source is provided: lisp interpreter, compiler (liszt), cross reference program (lxref), lisp manual, and other utility programs: trace, step, debug, cmu library functions, (and other minor ones), and these packages from the MIT lisp library: defstruct, loop. [These programs are provided as a convenience to those who can't access the arpanet and copy them. There is no documentation for them in the Franz Lisp manual. The best source of documentation is the Lisp Machine manual (available from MIT, Symbolics or LMI)] Regarding Flavors: there are two implementations of flavors for Franz Lisp, one from MIT (contact person Richard Zippel (rz@mit-mc)) and one from the University of Maryland (contact person Liz Allen (liz.umcp-cs@udel-relay)). Neither implementation is exactly like flavors on the Lisp Machine (due to differences between Lisp Machine lisp and Franz Lisp), and the implementations differ from each other. The MIT version cannot be distributed by us (yet) due to licensing problems. If you have a Lisp Machine Source license from Symbolics, you should be able to get a copy from MIT. For a Tech Report on Maryland flavors, write to Liz Allen. What is the form of the distribution: The files are packaged in a giant (2.1Mbyte) shell script. Running this shell script through 'sh' will result in a directory tree. A ReadMe file in the current directory will contain instructions on building the lisp system. The shell script is broken into a number of smaller files. The current distribution looks like: total 2089 489 -rw-r--r-- 1 jkf 500003 Jan 26 11:33 opus38.50.aa 489 -rw-r--r-- 1 jkf 500002 Jan 26 11:35 opus38.50.ab 489 -rw-r--r-- 1 jkf 500047 Jan 26 11:37 opus38.50.ac 489 -rw-r--r-- 1 jkf 500007 Jan 26 11:38 opus38.50.ad 133 -rw-r--r-- 1 jkf 136038 Jan 26 11:39 opus38.50.ae The '38.50' means Opus 38, minor version 50. These numbers may be different by the time you get your distribution. In order to extract the lisp files from this shell script, you need only type: cat * | sh To get a copy of the distribution: The distribution may be obtained either using FTP from an arpanet site, or on a magnetic tape through the U.S Mail. Arpanet: The files are stored on the arpanet host 'ucb-vax' [ if you have an out of date host table, it may be called 'ucb-monet' or 'ucb-ingres'. Its internet number is 10.2.0.78]. You can login as 'anonymous'. Use your name as the password. The files are in the subdirectory pub/lisp. For those who have accounts on ucb-vax, the full path is ~ftp/pub/lisp. Mag Tape: In order to get a copy of the distribution mailed to you, send a check to cover our tape copying and mailing costs (fees are listed below). We will purchase the mag tape and you are free to keep it. Please do NOT send us a tape. Fees: $50 - distribution tape mailed 3rd class add $10 - a copy of the Lisp Manual (we will only send one copy, you are free to photocopy it) add $7 - send tape via 1st class mail. -or- $15 - for just a copy of the Lisp Manual The address to send checks to is Keith Sklower EECS/Computer Science Division 524 Evans Hall University of California Berkeley, CA 94720 All checks should be made out to "Regents, University of California." We require pre-payment. We will not invoice or process purchase orders. Disclaimers: This distribution works on the latest versions of Unix running at Berkeley (4.1a). We can't guarantee that it will work on older versions (although, if you are running 4.1, it is almost certain that it will work, but we have not verified it). VMS users who are using a typical Unix compatibility package will probably not be able to build a lisp from this distribution unless they know a great deal about VMS and their compatibility package. At least one package (Eunice) supports Franz at this time. Redistribution: If you get a copy of the distribution, you are free to give it to other people. We appreciate being informed of new sites so they can be put on a mailing list (electronic and conventional). This list is used to announce new releases. To be put on this list, send U.S. Mail to Keith Sklower (address above) or to franz-friends-request@berkeley or ucbvax!franz-friends-request From Kim:fateman Mon Jan 31 19:30:20 1983 Date: 28 Jan 83 08:32:08 PST (Fri) From: Kim:fateman (Richard Fateman) Subject: Re: franz distribution Message-Id: <8300281631.21039@UCBVAX.BERKELEY.ARPA> Received: by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA21039; 28 Jan 83 08:31:58 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA03502; 31-Jan-83 19:30:20-PST (Mon) To: CARR@UTAH-20 Cc: franz-friends@ucbvax Our policy is that you may move copies of Franz elsewhere without notifying us. We continue to be interested in sharing anything you or your company wish to provide us, in suggestions, programs, etc. From UCBCAD:pettengi Mon Jan 31 19:55:02 1983 Date: 28-Jan-83 10:54:51-PST (Fri) From: UCBCAD:pettengi (Rob Pettengill) Subject: emacs interface to franz? Message-Id: <8300281854.26156@UCBCAD.BERKELEY.ARPA> Received: by UCBCAD.BERKELEY.ARPA (3.256 [12/5/82]) id AA26156; 28-Jan-83 10:54:51-PST (Fri) Received: from UCBCAD.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00374; 28 Jan 83 12:53:44 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA03987; 31-Jan-83 19:55:02-PST (Mon) To: mike@rand-unix, franz-friends@ucbvax Cc: pettengi@UCBCAD While I was at TI I used a very nice interface that let one start up a Franz lisp inside an Emacs window. It came from SRI when we got Eunice to run under our VMS. Try Kashtan@SRI-AI. Rob Pettengill E-Systems, Dallas, Tx. From UCBKIM:jkf Mon Jan 31 20:29:51 1983 Date: 28-Jan-83 08:34:33-PST (Fri) From: UCBKIM:jkf (John Foderaro) Subject: Re: franz distribution Message-Id: <8300281634.17319@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA17319; 28-Jan-83 08:34:33-PST (Fri) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA02275; 28 Jan 83 14:58:37 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA04834; 31-Jan-83 20:29:51-PST (Mon) To: CARR@UTAH-20 Cc: franz-friends@UCBVAX In-Reply-To: Your message of 28 Jan 1983 0912-MST Here is our current distribution policy. This differs a bit from the one sent out a month ago [in particular, we now have anonymous ftp] -[Fri Jan 28 08:31:45 1983 by jkf]- Franz Lisp Distribution This note describes our distribution policy for Franz Lisp. What is being distributed: We distribute only source code in order to keep the distribution small and relatively Unix independent. Makefiles are provided to build the entire lisp system from source, even if you don't have a version of lisp running already. This process takes about 3 cpu hours on a Vax 780. [This version for the Vax only, a 68000 version is being worked on. Contact ucbkim.sklower@berkeley or ucbkim.layer@berkeley] The following source is provided: lisp interpreter, compiler (liszt), cross reference program (lxref), lisp manual, and other utility programs: trace, step, debug, cmu library functions, (and other minor ones), and these packages from the MIT lisp library: defstruct, loop. [These programs are provided as a convenience to those who can't access the arpanet and copy them. There is no documentation for them in the Franz Lisp manual. The best source of documentation is the Lisp Machine manual (available from MIT, Symbolics or LMI)] Regarding Flavors: there are two implementations of flavors for Franz Lisp, one from MIT (contact person Richard Zippel (rz@mit-mc)) and one from the University of Maryland (contact person Liz Allen (liz.umcp-cs@udel-relay)). Neither implementation is exactly like flavors on the Lisp Machine (due to differences between Lisp Machine lisp and Franz Lisp), and the implementations differ from each other. The MIT version cannot be distributed by us (yet) due to licensing problems. If you have a Lisp Machine Source license from Symbolics, you should be able to get a copy from MIT. For a Tech Report on Maryland flavors, write to Liz Allen. What is the form of the distribution: The files are packaged in a giant (2.1Mbyte) shell script. Running this shell script through 'sh' will result in a directory tree. A ReadMe file in the current directory will contain instructions on building the lisp system. The shell script is broken into a number of smaller files. The current distribution looks like: total 2089 489 -rw-r--r-- 1 jkf 500003 Jan 26 11:33 opus38.50.aa 489 -rw-r--r-- 1 jkf 500002 Jan 26 11:35 opus38.50.ab 489 -rw-r--r-- 1 jkf 500047 Jan 26 11:37 opus38.50.ac 489 -rw-r--r-- 1 jkf 500007 Jan 26 11:38 opus38.50.ad 133 -rw-r--r-- 1 jkf 136038 Jan 26 11:39 opus38.50.ae The '38.50' means Opus 38, minor version 50. These numbers may be different by the time you get your distribution. In order to extract the lisp files from this shell script, you need only type: cat * | sh To get a copy of the distribution: The distribution may be obtained either using FTP from an arpanet site, or on a magnetic tape through the U.S Mail. Arpanet: The files are stored on the arpanet host 'ucb-vax' [ if you have an out of date host table, it may be called 'ucb-monet' or 'ucb-ingres'. Its internet number is 10.2.0.78]. You can login as 'anonymous'. Use your name as the password. The files are in the subdirectory pub/lisp. For those who have accounts on ucb-vax, the full path is ~ftp/pub/lisp. Mag Tape: In order to get a copy of the distribution mailed to you, send a check to cover our tape copying and mailing costs (fees are listed below). We will purchase the mag tape and you are free to keep it. Please do NOT send us a tape. Fees: $50 - distribution tape mailed 3rd class add $10 - a copy of the Lisp Manual (we will only send one copy, you are free to photocopy it) add $7 - send tape via 1st class mail. -or- $15 - for just a copy of the Lisp Manual The address to send checks to is Keith Sklower EECS/Computer Science Division 524 Evans Hall University of California Berkeley, CA 94720 All checks should be made out to "Regents, University of California." We require pre-payment. We will not invoice or process purchase orders. Disclaimers: This distribution works on the latest versions of Unix running at Berkeley (4.1a). We can't guarantee that it will work on older versions (although, if you are running 4.1, it is almost certain that it will work, but we have not verified it). VMS users who are using a typical Unix compatibility package will probably not be able to build a lisp from this distribution unless they know a great deal about VMS and their compatibility package. At least one package (Eunice) supports Franz at this time. Redistribution: If you get a copy of the distribution, you are free to give it to other people. We appreciate being informed of new sites so they can be put on a mailing list (electronic and conventional). This list is used to announce new releases. To be put on this list, send U.S. Mail to Keith Sklower (address above) or to franz-friends-request@berkeley or ucbvax!franz-friends-request From Kim:fateman Mon Jan 31 21:34:44 1983 Date: 28 Jan 83 08:32:08 PST (Fri) From: Kim:fateman (Richard Fateman) Subject: Re: franz distribution Message-Id: <8300281631.21039@UCBVAX.BERKELEY.ARPA> Received: by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA21039; 28 Jan 83 08:31:58 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00642; 31-Jan-83 21:34:44-PST (Mon) To: CARR@UTAH-20 Cc: franz-friends@ucbvax Our policy is that you may move copies of Franz elsewhere without notifying us. We continue to be interested in sharing anything you or your company wish to provide us, in suggestions, programs, etc. From UCBCAD:pettengi Mon Jan 31 22:12:30 1983 Date: 28-Jan-83 10:54:51-PST (Fri) From: UCBCAD:pettengi (Rob Pettengill) Subject: emacs interface to franz? Message-Id: <8300281854.26156@UCBCAD.BERKELEY.ARPA> Received: by UCBCAD.BERKELEY.ARPA (3.256 [12/5/82]) id AA26156; 28-Jan-83 10:54:51-PST (Fri) Received: from UCBCAD.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00374; 28 Jan 83 12:53:44 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA01266; 31-Jan-83 22:12:30-PST (Mon) To: mike@rand-unix, franz-friends@ucbvax Cc: pettengi@UCBCAD While I was at TI I used a very nice interface that let one start up a Franz lisp inside an Emacs window. It came from SRI when we got Eunice to run under our VMS. Try Kashtan@SRI-AI. Rob Pettengill E-Systems, Dallas, Tx. From UCBKIM:jkf Mon Jan 31 22:44:43 1983 Date: 28-Jan-83 08:34:33-PST (Fri) From: UCBKIM:jkf (John Foderaro) Subject: Re: franz distribution Message-Id: <8300281634.17319@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA17319; 28-Jan-83 08:34:33-PST (Fri) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA02275; 28 Jan 83 14:58:37 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA01976; 31-Jan-83 22:44:43-PST (Mon) To: CARR@UTAH-20 Cc: franz-friends@UCBVAX In-Reply-To: Your message of 28 Jan 1983 0912-MST Here is our current distribution policy. This differs a bit from the one sent out a month ago [in particular, we now have anonymous ftp] -[Fri Jan 28 08:31:45 1983 by jkf]- Franz Lisp Distribution This note describes our distribution policy for Franz Lisp. What is being distributed: We distribute only source code in order to keep the distribution small and relatively Unix independent. Makefiles are provided to build the entire lisp system from source, even if you don't have a version of lisp running already. This process takes about 3 cpu hours on a Vax 780. [This version for the Vax only, a 68000 version is being worked on. Contact ucbkim.sklower@berkeley or ucbkim.layer@berkeley] The following source is provided: lisp interpreter, compiler (liszt), cross reference program (lxref), lisp manual, and other utility programs: trace, step, debug, cmu library functions, (and other minor ones), and these packages from the MIT lisp library: defstruct, loop. [These programs are provided as a convenience to those who can't access the arpanet and copy them. There is no documentation for them in the Franz Lisp manual. The best source of documentation is the Lisp Machine manual (available from MIT, Symbolics or LMI)] Regarding Flavors: there are two implementations of flavors for Franz Lisp, one from MIT (contact person Richard Zippel (rz@mit-mc)) and one from the University of Maryland (contact person Liz Allen (liz.umcp-cs@udel-relay)). Neither implementation is exactly like flavors on the Lisp Machine (due to differences between Lisp Machine lisp and Franz Lisp), and the implementations differ from each other. The MIT version cannot be distributed by us (yet) due to licensing problems. If you have a Lisp Machine Source license from Symbolics, you should be able to get a copy from MIT. For a Tech Report on Maryland flavors, write to Liz Allen. What is the form of the distribution: The files are packaged in a giant (2.1Mbyte) shell script. Running this shell script through 'sh' will result in a directory tree. A ReadMe file in the current directory will contain instructions on building the lisp system. The shell script is broken into a number of smaller files. The current distribution looks like: total 2089 489 -rw-r--r-- 1 jkf 500003 Jan 26 11:33 opus38.50.aa 489 -rw-r--r-- 1 jkf 500002 Jan 26 11:35 opus38.50.ab 489 -rw-r--r-- 1 jkf 500047 Jan 26 11:37 opus38.50.ac 489 -rw-r--r-- 1 jkf 500007 Jan 26 11:38 opus38.50.ad 133 -rw-r--r-- 1 jkf 136038 Jan 26 11:39 opus38.50.ae The '38.50' means Opus 38, minor version 50. These numbers may be different by the time you get your distribution. In order to extract the lisp files from this shell script, you need only type: cat * | sh To get a copy of the distribution: The distribution may be obtained either using FTP from an arpanet site, or on a magnetic tape through the U.S Mail. Arpanet: The files are stored on the arpanet host 'ucb-vax' [ if you have an out of date host table, it may be called 'ucb-monet' or 'ucb-ingres'. Its internet number is 10.2.0.78]. You can login as 'anonymous'. Use your name as the password. The files are in the subdirectory pub/lisp. For those who have accounts on ucb-vax, the full path is ~ftp/pub/lisp. Mag Tape: In order to get a copy of the distribution mailed to you, send a check to cover our tape copying and mailing costs (fees are listed below). We will purchase the mag tape and you are free to keep it. Please do NOT send us a tape. Fees: $50 - distribution tape mailed 3rd class add $10 - a copy of the Lisp Manual (we will only send one copy, you are free to photocopy it) add $7 - send tape via 1st class mail. -or- $15 - for just a copy of the Lisp Manual The address to send checks to is Keith Sklower EECS/Computer Science Division 524 Evans Hall University of California Berkeley, CA 94720 All checks should be made out to "Regents, University of California." We require pre-payment. We will not invoice or process purchase orders. Disclaimers: This distribution works on the latest versions of Unix running at Berkeley (4.1a). We can't guarantee that it will work on older versions (although, if you are running 4.1, it is almost certain that it will work, but we have not verified it). VMS users who are using a typical Unix compatibility package will probably not be able to build a lisp from this distribution unless they know a great deal about VMS and their compatibility package. At least one package (Eunice) supports Franz at this time. Redistribution: If you get a copy of the distribution, you are free to give it to other people. We appreciate being informed of new sites so they can be put on a mailing list (electronic and conventional). This list is used to announce new releases. To be put on this list, send U.S. Mail to Keith Sklower (address above) or to franz-friends-request@berkeley or ucbvax!franz-friends-request From UCBKIM:jkf Tue Feb 1 10:35:21 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00644; 1-Feb-83 10:35:21-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From UCBKIM:jkf Tue Feb 1 11:34:04 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA02111; 1-Feb-83 11:34:04-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From UCBKIM:jkf Tue Feb 1 12:05:33 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA02854; 1-Feb-83 12:05:33-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From UCBKIM:jkf Tue Feb 1 12:26:37 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA03162; 1-Feb-83 12:26:37-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From UCBKIM:jkf Tue Feb 1 12:53:16 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA03661; 1-Feb-83 12:53:16-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From UCBKIM:jkf Tue Feb 1 13:52:06 1983 Date: 1-Feb-83 10:32:24-PST (Tue) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages Message-Id: <8301011832.599@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA00599; 1-Feb-83 10:32:24-PST (Tue) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00473; 1 Feb 83 10:32:35 PST (Tue) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA05054; 1-Feb-83 13:52:06-PST (Tue) To: franz-friends@ucbvax I'm sorry for the multiple messages. The franz-friends mailing list is huge and the machine which does the mailing is crashing often. Our local mail wizard informs me that if it crashes while in the middle of sending mail it will not have a record of who it sent to before the crash. I hope you don't get too many copies of this message. From mike@rand-unix Wed Feb 2 05:33:01 1983 Date: Tuesday, 1 Feb 1983 15:06-PST From: mike@RAND-UNIX Subject: response to "emacs interface to franz?" Message-Id: <8301021325.221@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00221; 2 Feb 83 05:25:50 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA24463; 2-Feb-83 05:33:01-PST (Wed) To: franz-friends@BERKELEY Cc: mike@RAND-UNIX Here are the responses that I received to my question "What's out there for emacs?" ------- Forwarded Messages Received: From SU-SCORE by RAND-UNIX at Mon Jan 24 23:41:37 1983 Date: Mon 24 Jan 83 22:43:01-PST From: Jay Lark <CSD.LARK@SU-SCORE.ARPA> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX.ARPA In-Reply-To: Your message of Mon 24 Jan 83 18:49:21-PST I'm sure you've probably received several messages similar to this one, but just in case... There exists the capability in Unix Emacs to run a process in its own buffer. Typein can be directed to the process, and output is just sent right to the buffer. This is an excellent way of running Lisp, because you get all of the nice Emacs features (paren balancing, local sexpr editing) at essentially no cost. I have been largely unsuccessful with trying to run Emacs under Lisp. The process package is part of the standard Unix Emacs distribution. Jay Lark ------- ------- Message 2 Received: From UTAH-CS by RAND-UNIX at Tue Jan 25 07:01:36 1983 Date: 25 Jan 1983 7:20-MST From: Russ Fish <utah-gr!fish@UTAH-CS> (host 10.0.0.4) Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Cc: utah-gr!galway@UTAH-CS In-Reply-To: mike's message of Monday, 24 Jan 1983 15:34-PST We have been running our PSL (Portable Standard Lisp) in gemacs (Gosling's emacs) windows for some time. I suspect it would be a minor hack to convert it to Franz, but haven't done it and am not a Franz user. I could mail you our .ml code if you wanted to undertake converting it to Franz (or just using it for inspiration and hacking your own) and distributing it to Franz folks. It works like this: The lisp process is associated with a gemacs buffer/window. In that window you can carry on a normal line-by-line conversation, if you wish. <CR> sends the current line, (back to mark, which is left after the prompt) into the lisp. We mostly use the PSL in Rlisp syntax, which is algol-like, but this part of the code is just a wrapping for the new-shell function in process.ml with appropriate editting syntax set, so you could do the same with no work for any Lisp. You can send an expression, fn def, etc. from any other lisp-mode window with a single keypress. Echoing as input in the dialog window is inhibited if a prefix arg is provided, so you don't have to look at long exprs or fn defs again, just the lisp response. Sending multiple line exprs in response to a single prompt depends on the fact that PSL numbers the prompts for history, like the c-shell. A gemacs mlisp output filter process monitors the output for toploop prompts and feeds another line of input if the same prompt number comes back, instead of printing the prompt. The result is pretty classy. You get the full many-window gemacs editing environment with tags, etc. for random-access navigation and just send chunks of code as you change them. The extreme of usage is "menu" like windows which contain debugging code in clusters rather than sequences. You select exprs with the cursor and send them in any order. We also provide key fns for the common case of sending single lines to the toploop or single-character commands to the break-loop without editting them into a buffer. Best respond directly to me, since I am not on Franz-Friends. -Russ Fish (Fish@Utah-20, utah-cs!fish) ------- Message 3 Received: From UDEL-RELAY by RAND-UNIX at Tue Jan 25 18:18:55 1983 Return-Path: <israel.umcp-cs@UDel-Relay> Date: 25 Jan 83 15:13:51 EST (Tue) From: Bruce Israel <israel.umcp-cs@UDel-Relay> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX In-Reply-To: Message of Monday, 24 Jan 1983 15:34-PST from mike@RAND-UNIX <8300250008.58@UCBVAX.BERKELEY.ARPA> Via: UMCP-CS; 25 Jan 83 20:45-EST We have a few franz<->emacs interfaces, but I'm not sure what you mean. One is the process.ml package that comes with gosling's emacs (the emacs that I assume you are talking about). With this package, you can run franz inside a window from within emacs and have the facilities of an editor along with lisp. The other thing we have is a local Franz package called the load1 package. This package was written for compiling flavors (like in the lisp machine; another local package) and has a function called vi. (vi 'lisp-function) will call the editor (from the environment variable VISUAL, /usr/ucb/vi is default) on the file which contains the definition of the lisp function, positioning the editor at the point in the file where the function is defined. Upon exiting the editor, it asks you if you want to reload the modified file. To edit a function from a file this way, the file must have been load1'ed previously so that the info on where the function is stored and what type it is will have been saved. Load1 will distinguish between different types of functions, ie. defflavors, defmethods, defmacros, defuns etc. and will search for the correct definition in the file. Is this what you mean? If you like I can send you the four or five files necessary. - Bruce ------- Message 4 Received: From CMU-CS-VLSI by RAND-UNIX at Thu Jan 27 06:53:41 1983 Date: 27 Jan 1983 09:44-EST From: Carl.Ebeling@CMU-CS-VLSI Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Message-Id: <412526661/ce@CMU-CS-VLSI> In-Reply-To: mike@RAND-UNIX's bboard message of 27-Jan-83 04:14 I have an electric lisp package and process package for emacs. It includes 'zap-function-to-lisp' among other things. It is for Gosling's emacs and uses the subprocess facility. I can mail them to you if you like. Carl ------- End of Forwarded Messages From mike@rand-unix Wed Feb 2 06:07:11 1983 Date: Tuesday, 1 Feb 1983 15:06-PST From: mike@RAND-UNIX Subject: response to "emacs interface to franz?" Message-Id: <8301021325.221@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00221; 2 Feb 83 05:25:50 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA24743; 2-Feb-83 06:07:11-PST (Wed) To: franz-friends@BERKELEY Cc: mike@RAND-UNIX Here are the responses that I received to my question "What's out there for emacs?" ------- Forwarded Messages Received: From SU-SCORE by RAND-UNIX at Mon Jan 24 23:41:37 1983 Date: Mon 24 Jan 83 22:43:01-PST From: Jay Lark <CSD.LARK@SU-SCORE.ARPA> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX.ARPA In-Reply-To: Your message of Mon 24 Jan 83 18:49:21-PST I'm sure you've probably received several messages similar to this one, but just in case... There exists the capability in Unix Emacs to run a process in its own buffer. Typein can be directed to the process, and output is just sent right to the buffer. This is an excellent way of running Lisp, because you get all of the nice Emacs features (paren balancing, local sexpr editing) at essentially no cost. I have been largely unsuccessful with trying to run Emacs under Lisp. The process package is part of the standard Unix Emacs distribution. Jay Lark ------- ------- Message 2 Received: From UTAH-CS by RAND-UNIX at Tue Jan 25 07:01:36 1983 Date: 25 Jan 1983 7:20-MST From: Russ Fish <utah-gr!fish@UTAH-CS> (host 10.0.0.4) Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Cc: utah-gr!galway@UTAH-CS In-Reply-To: mike's message of Monday, 24 Jan 1983 15:34-PST We have been running our PSL (Portable Standard Lisp) in gemacs (Gosling's emacs) windows for some time. I suspect it would be a minor hack to convert it to Franz, but haven't done it and am not a Franz user. I could mail you our .ml code if you wanted to undertake converting it to Franz (or just using it for inspiration and hacking your own) and distributing it to Franz folks. It works like this: The lisp process is associated with a gemacs buffer/window. In that window you can carry on a normal line-by-line conversation, if you wish. <CR> sends the current line, (back to mark, which is left after the prompt) into the lisp. We mostly use the PSL in Rlisp syntax, which is algol-like, but this part of the code is just a wrapping for the new-shell function in process.ml with appropriate editting syntax set, so you could do the same with no work for any Lisp. You can send an expression, fn def, etc. from any other lisp-mode window with a single keypress. Echoing as input in the dialog window is inhibited if a prefix arg is provided, so you don't have to look at long exprs or fn defs again, just the lisp response. Sending multiple line exprs in response to a single prompt depends on the fact that PSL numbers the prompts for history, like the c-shell. A gemacs mlisp output filter process monitors the output for toploop prompts and feeds another line of input if the same prompt number comes back, instead of printing the prompt. The result is pretty classy. You get the full many-window gemacs editing environment with tags, etc. for random-access navigation and just send chunks of code as you change them. The extreme of usage is "menu" like windows which contain debugging code in clusters rather than sequences. You select exprs with the cursor and send them in any order. We also provide key fns for the common case of sending single lines to the toploop or single-character commands to the break-loop without editting them into a buffer. Best respond directly to me, since I am not on Franz-Friends. -Russ Fish (Fish@Utah-20, utah-cs!fish) ------- Message 3 Received: From UDEL-RELAY by RAND-UNIX at Tue Jan 25 18:18:55 1983 Return-Path: <israel.umcp-cs@UDel-Relay> Date: 25 Jan 83 15:13:51 EST (Tue) From: Bruce Israel <israel.umcp-cs@UDel-Relay> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX In-Reply-To: Message of Monday, 24 Jan 1983 15:34-PST from mike@RAND-UNIX <8300250008.58@UCBVAX.BERKELEY.ARPA> Via: UMCP-CS; 25 Jan 83 20:45-EST We have a few franz<->emacs interfaces, but I'm not sure what you mean. One is the process.ml package that comes with gosling's emacs (the emacs that I assume you are talking about). With this package, you can run franz inside a window from within emacs and have the facilities of an editor along with lisp. The other thing we have is a local Franz package called the load1 package. This package was written for compiling flavors (like in the lisp machine; another local package) and has a function called vi. (vi 'lisp-function) will call the editor (from the environment variable VISUAL, /usr/ucb/vi is default) on the file which contains the definition of the lisp function, positioning the editor at the point in the file where the function is defined. Upon exiting the editor, it asks you if you want to reload the modified file. To edit a function from a file this way, the file must have been load1'ed previously so that the info on where the function is stored and what type it is will have been saved. Load1 will distinguish between different types of functions, ie. defflavors, defmethods, defmacros, defuns etc. and will search for the correct definition in the file. Is this what you mean? If you like I can send you the four or five files necessary. - Bruce ------- Message 4 Received: From CMU-CS-VLSI by RAND-UNIX at Thu Jan 27 06:53:41 1983 Date: 27 Jan 1983 09:44-EST From: Carl.Ebeling@CMU-CS-VLSI Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Message-Id: <412526661/ce@CMU-CS-VLSI> In-Reply-To: mike@RAND-UNIX's bboard message of 27-Jan-83 04:14 I have an electric lisp package and process package for emacs. It includes 'zap-function-to-lisp' among other things. It is for Gosling's emacs and uses the subprocess facility. I can mail them to you if you like. Carl ------- End of Forwarded Messages From mike@rand-unix Wed Feb 2 06:42:41 1983 Date: Tuesday, 1 Feb 1983 15:06-PST From: mike@RAND-UNIX Subject: response to "emacs interface to franz?" Message-Id: <8301021325.221@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00221; 2 Feb 83 05:25:50 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA25024; 2-Feb-83 06:42:41-PST (Wed) To: franz-friends@BERKELEY Cc: mike@RAND-UNIX Here are the responses that I received to my question "What's out there for emacs?" ------- Forwarded Messages Received: From SU-SCORE by RAND-UNIX at Mon Jan 24 23:41:37 1983 Date: Mon 24 Jan 83 22:43:01-PST From: Jay Lark <CSD.LARK@SU-SCORE.ARPA> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX.ARPA In-Reply-To: Your message of Mon 24 Jan 83 18:49:21-PST I'm sure you've probably received several messages similar to this one, but just in case... There exists the capability in Unix Emacs to run a process in its own buffer. Typein can be directed to the process, and output is just sent right to the buffer. This is an excellent way of running Lisp, because you get all of the nice Emacs features (paren balancing, local sexpr editing) at essentially no cost. I have been largely unsuccessful with trying to run Emacs under Lisp. The process package is part of the standard Unix Emacs distribution. Jay Lark ------- ------- Message 2 Received: From UTAH-CS by RAND-UNIX at Tue Jan 25 07:01:36 1983 Date: 25 Jan 1983 7:20-MST From: Russ Fish <utah-gr!fish@UTAH-CS> (host 10.0.0.4) Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Cc: utah-gr!galway@UTAH-CS In-Reply-To: mike's message of Monday, 24 Jan 1983 15:34-PST We have been running our PSL (Portable Standard Lisp) in gemacs (Gosling's emacs) windows for some time. I suspect it would be a minor hack to convert it to Franz, but haven't done it and am not a Franz user. I could mail you our .ml code if you wanted to undertake converting it to Franz (or just using it for inspiration and hacking your own) and distributing it to Franz folks. It works like this: The lisp process is associated with a gemacs buffer/window. In that window you can carry on a normal line-by-line conversation, if you wish. <CR> sends the current line, (back to mark, which is left after the prompt) into the lisp. We mostly use the PSL in Rlisp syntax, which is algol-like, but this part of the code is just a wrapping for the new-shell function in process.ml with appropriate editting syntax set, so you could do the same with no work for any Lisp. You can send an expression, fn def, etc. from any other lisp-mode window with a single keypress. Echoing as input in the dialog window is inhibited if a prefix arg is provided, so you don't have to look at long exprs or fn defs again, just the lisp response. Sending multiple line exprs in response to a single prompt depends on the fact that PSL numbers the prompts for history, like the c-shell. A gemacs mlisp output filter process monitors the output for toploop prompts and feeds another line of input if the same prompt number comes back, instead of printing the prompt. The result is pretty classy. You get the full many-window gemacs editing environment with tags, etc. for random-access navigation and just send chunks of code as you change them. The extreme of usage is "menu" like windows which contain debugging code in clusters rather than sequences. You select exprs with the cursor and send them in any order. We also provide key fns for the common case of sending single lines to the toploop or single-character commands to the break-loop without editting them into a buffer. Best respond directly to me, since I am not on Franz-Friends. -Russ Fish (Fish@Utah-20, utah-cs!fish) ------- Message 3 Received: From UDEL-RELAY by RAND-UNIX at Tue Jan 25 18:18:55 1983 Return-Path: <israel.umcp-cs@UDel-Relay> Date: 25 Jan 83 15:13:51 EST (Tue) From: Bruce Israel <israel.umcp-cs@UDel-Relay> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX In-Reply-To: Message of Monday, 24 Jan 1983 15:34-PST from mike@RAND-UNIX <8300250008.58@UCBVAX.BERKELEY.ARPA> Via: UMCP-CS; 25 Jan 83 20:45-EST We have a few franz<->emacs interfaces, but I'm not sure what you mean. One is the process.ml package that comes with gosling's emacs (the emacs that I assume you are talking about). With this package, you can run franz inside a window from within emacs and have the facilities of an editor along with lisp. The other thing we have is a local Franz package called the load1 package. This package was written for compiling flavors (like in the lisp machine; another local package) and has a function called vi. (vi 'lisp-function) will call the editor (from the environment variable VISUAL, /usr/ucb/vi is default) on the file which contains the definition of the lisp function, positioning the editor at the point in the file where the function is defined. Upon exiting the editor, it asks you if you want to reload the modified file. To edit a function from a file this way, the file must have been load1'ed previously so that the info on where the function is stored and what type it is will have been saved. Load1 will distinguish between different types of functions, ie. defflavors, defmethods, defmacros, defuns etc. and will search for the correct definition in the file. Is this what you mean? If you like I can send you the four or five files necessary. - Bruce ------- Message 4 Received: From CMU-CS-VLSI by RAND-UNIX at Thu Jan 27 06:53:41 1983 Date: 27 Jan 1983 09:44-EST From: Carl.Ebeling@CMU-CS-VLSI Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Message-Id: <412526661/ce@CMU-CS-VLSI> In-Reply-To: mike@RAND-UNIX's bboard message of 27-Jan-83 04:14 I have an electric lisp package and process package for emacs. It includes 'zap-function-to-lisp' among other things. It is for Gosling's emacs and uses the subprocess facility. I can mail them to you if you like. Carl ------- End of Forwarded Messages From mike@rand-unix Wed Feb 2 07:09:17 1983 Date: Tuesday, 1 Feb 1983 15:06-PST From: mike@RAND-UNIX Subject: response to "emacs interface to franz?" Message-Id: <8301021325.221@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00221; 2 Feb 83 05:25:50 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA25231; 2-Feb-83 07:09:17-PST (Wed) To: franz-friends@BERKELEY Cc: mike@RAND-UNIX Here are the responses that I received to my question "What's out there for emacs?" ------- Forwarded Messages Received: From SU-SCORE by RAND-UNIX at Mon Jan 24 23:41:37 1983 Date: Mon 24 Jan 83 22:43:01-PST From: Jay Lark <CSD.LARK@SU-SCORE.ARPA> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX.ARPA In-Reply-To: Your message of Mon 24 Jan 83 18:49:21-PST I'm sure you've probably received several messages similar to this one, but just in case... There exists the capability in Unix Emacs to run a process in its own buffer. Typein can be directed to the process, and output is just sent right to the buffer. This is an excellent way of running Lisp, because you get all of the nice Emacs features (paren balancing, local sexpr editing) at essentially no cost. I have been largely unsuccessful with trying to run Emacs under Lisp. The process package is part of the standard Unix Emacs distribution. Jay Lark ------- ------- Message 2 Received: From UTAH-CS by RAND-UNIX at Tue Jan 25 07:01:36 1983 Date: 25 Jan 1983 7:20-MST From: Russ Fish <utah-gr!fish@UTAH-CS> (host 10.0.0.4) Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Cc: utah-gr!galway@UTAH-CS In-Reply-To: mike's message of Monday, 24 Jan 1983 15:34-PST We have been running our PSL (Portable Standard Lisp) in gemacs (Gosling's emacs) windows for some time. I suspect it would be a minor hack to convert it to Franz, but haven't done it and am not a Franz user. I could mail you our .ml code if you wanted to undertake converting it to Franz (or just using it for inspiration and hacking your own) and distributing it to Franz folks. It works like this: The lisp process is associated with a gemacs buffer/window. In that window you can carry on a normal line-by-line conversation, if you wish. <CR> sends the current line, (back to mark, which is left after the prompt) into the lisp. We mostly use the PSL in Rlisp syntax, which is algol-like, but this part of the code is just a wrapping for the new-shell function in process.ml with appropriate editting syntax set, so you could do the same with no work for any Lisp. You can send an expression, fn def, etc. from any other lisp-mode window with a single keypress. Echoing as input in the dialog window is inhibited if a prefix arg is provided, so you don't have to look at long exprs or fn defs again, just the lisp response. Sending multiple line exprs in response to a single prompt depends on the fact that PSL numbers the prompts for history, like the c-shell. A gemacs mlisp output filter process monitors the output for toploop prompts and feeds another line of input if the same prompt number comes back, instead of printing the prompt. The result is pretty classy. You get the full many-window gemacs editing environment with tags, etc. for random-access navigation and just send chunks of code as you change them. The extreme of usage is "menu" like windows which contain debugging code in clusters rather than sequences. You select exprs with the cursor and send them in any order. We also provide key fns for the common case of sending single lines to the toploop or single-character commands to the break-loop without editting them into a buffer. Best respond directly to me, since I am not on Franz-Friends. -Russ Fish (Fish@Utah-20, utah-cs!fish) ------- Message 3 Received: From UDEL-RELAY by RAND-UNIX at Tue Jan 25 18:18:55 1983 Return-Path: <israel.umcp-cs@UDel-Relay> Date: 25 Jan 83 15:13:51 EST (Tue) From: Bruce Israel <israel.umcp-cs@UDel-Relay> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX In-Reply-To: Message of Monday, 24 Jan 1983 15:34-PST from mike@RAND-UNIX <8300250008.58@UCBVAX.BERKELEY.ARPA> Via: UMCP-CS; 25 Jan 83 20:45-EST We have a few franz<->emacs interfaces, but I'm not sure what you mean. One is the process.ml package that comes with gosling's emacs (the emacs that I assume you are talking about). With this package, you can run franz inside a window from within emacs and have the facilities of an editor along with lisp. The other thing we have is a local Franz package called the load1 package. This package was written for compiling flavors (like in the lisp machine; another local package) and has a function called vi. (vi 'lisp-function) will call the editor (from the environment variable VISUAL, /usr/ucb/vi is default) on the file which contains the definition of the lisp function, positioning the editor at the point in the file where the function is defined. Upon exiting the editor, it asks you if you want to reload the modified file. To edit a function from a file this way, the file must have been load1'ed previously so that the info on where the function is stored and what type it is will have been saved. Load1 will distinguish between different types of functions, ie. defflavors, defmethods, defmacros, defuns etc. and will search for the correct definition in the file. Is this what you mean? If you like I can send you the four or five files necessary. - Bruce ------- Message 4 Received: From CMU-CS-VLSI by RAND-UNIX at Thu Jan 27 06:53:41 1983 Date: 27 Jan 1983 09:44-EST From: Carl.Ebeling@CMU-CS-VLSI Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Message-Id: <412526661/ce@CMU-CS-VLSI> In-Reply-To: mike@RAND-UNIX's bboard message of 27-Jan-83 04:14 I have an electric lisp package and process package for emacs. It includes 'zap-function-to-lisp' among other things. It is for Gosling's emacs and uses the subprocess facility. I can mail them to you if you like. Carl ------- End of Forwarded Messages From mike@rand-unix Wed Feb 2 07:38:51 1983 Date: Tuesday, 1 Feb 1983 15:06-PST From: mike@RAND-UNIX Subject: response to "emacs interface to franz?" Message-Id: <8301021325.221@UCBVAX.BERKELEY.ARPA> Received: from rand-unix by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00221; 2 Feb 83 05:25:50 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA25505; 2-Feb-83 07:38:51-PST (Wed) To: franz-friends@BERKELEY Cc: mike@RAND-UNIX Here are the responses that I received to my question "What's out there for emacs?" ------- Forwarded Messages Received: From SU-SCORE by RAND-UNIX at Mon Jan 24 23:41:37 1983 Date: Mon 24 Jan 83 22:43:01-PST From: Jay Lark <CSD.LARK@SU-SCORE.ARPA> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX.ARPA In-Reply-To: Your message of Mon 24 Jan 83 18:49:21-PST I'm sure you've probably received several messages similar to this one, but just in case... There exists the capability in Unix Emacs to run a process in its own buffer. Typein can be directed to the process, and output is just sent right to the buffer. This is an excellent way of running Lisp, because you get all of the nice Emacs features (paren balancing, local sexpr editing) at essentially no cost. I have been largely unsuccessful with trying to run Emacs under Lisp. The process package is part of the standard Unix Emacs distribution. Jay Lark ------- ------- Message 2 Received: From UTAH-CS by RAND-UNIX at Tue Jan 25 07:01:36 1983 Date: 25 Jan 1983 7:20-MST From: Russ Fish <utah-gr!fish@UTAH-CS> (host 10.0.0.4) Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Cc: utah-gr!galway@UTAH-CS In-Reply-To: mike's message of Monday, 24 Jan 1983 15:34-PST We have been running our PSL (Portable Standard Lisp) in gemacs (Gosling's emacs) windows for some time. I suspect it would be a minor hack to convert it to Franz, but haven't done it and am not a Franz user. I could mail you our .ml code if you wanted to undertake converting it to Franz (or just using it for inspiration and hacking your own) and distributing it to Franz folks. It works like this: The lisp process is associated with a gemacs buffer/window. In that window you can carry on a normal line-by-line conversation, if you wish. <CR> sends the current line, (back to mark, which is left after the prompt) into the lisp. We mostly use the PSL in Rlisp syntax, which is algol-like, but this part of the code is just a wrapping for the new-shell function in process.ml with appropriate editting syntax set, so you could do the same with no work for any Lisp. You can send an expression, fn def, etc. from any other lisp-mode window with a single keypress. Echoing as input in the dialog window is inhibited if a prefix arg is provided, so you don't have to look at long exprs or fn defs again, just the lisp response. Sending multiple line exprs in response to a single prompt depends on the fact that PSL numbers the prompts for history, like the c-shell. A gemacs mlisp output filter process monitors the output for toploop prompts and feeds another line of input if the same prompt number comes back, instead of printing the prompt. The result is pretty classy. You get the full many-window gemacs editing environment with tags, etc. for random-access navigation and just send chunks of code as you change them. The extreme of usage is "menu" like windows which contain debugging code in clusters rather than sequences. You select exprs with the cursor and send them in any order. We also provide key fns for the common case of sending single lines to the toploop or single-character commands to the break-loop without editting them into a buffer. Best respond directly to me, since I am not on Franz-Friends. -Russ Fish (Fish@Utah-20, utah-cs!fish) ------- Message 3 Received: From UDEL-RELAY by RAND-UNIX at Tue Jan 25 18:18:55 1983 Return-Path: <israel.umcp-cs@UDel-Relay> Date: 25 Jan 83 15:13:51 EST (Tue) From: Bruce Israel <israel.umcp-cs@UDel-Relay> Subject: Re: emacs interface to franz? To: mike@RAND-UNIX In-Reply-To: Message of Monday, 24 Jan 1983 15:34-PST from mike@RAND-UNIX <8300250008.58@UCBVAX.BERKELEY.ARPA> Via: UMCP-CS; 25 Jan 83 20:45-EST We have a few franz<->emacs interfaces, but I'm not sure what you mean. One is the process.ml package that comes with gosling's emacs (the emacs that I assume you are talking about). With this package, you can run franz inside a window from within emacs and have the facilities of an editor along with lisp. The other thing we have is a local Franz package called the load1 package. This package was written for compiling flavors (like in the lisp machine; another local package) and has a function called vi. (vi 'lisp-function) will call the editor (from the environment variable VISUAL, /usr/ucb/vi is default) on the file which contains the definition of the lisp function, positioning the editor at the point in the file where the function is defined. Upon exiting the editor, it asks you if you want to reload the modified file. To edit a function from a file this way, the file must have been load1'ed previously so that the info on where the function is stored and what type it is will have been saved. Load1 will distinguish between different types of functions, ie. defflavors, defmethods, defmacros, defuns etc. and will search for the correct definition in the file. Is this what you mean? If you like I can send you the four or five files necessary. - Bruce ------- Message 4 Received: From CMU-CS-VLSI by RAND-UNIX at Thu Jan 27 06:53:41 1983 Date: 27 Jan 1983 09:44-EST From: Carl.Ebeling@CMU-CS-VLSI Subject: Re: emacs interface to franz? To: mike@RAND-UNIX Message-Id: <412526661/ce@CMU-CS-VLSI> In-Reply-To: mike@RAND-UNIX's bboard message of 27-Jan-83 04:14 I have an electric lisp package and process package for emacs. It includes 'zap-function-to-lisp' among other things. It is for Gosling's emacs and uses the subprocess facility. I can mail them to you if you like. Carl ------- End of Forwarded Messages From UCBKIM:jkf Wed Feb 2 08:19:19 1983 Date: 2-Feb-83 08:14:21-PST (Wed) From: UCBKIM:jkf (John Foderaro) Subject: multiple messages fixed? Message-Id: <8301021614.25937@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA25937; 2-Feb-83 08:14:21-PST (Wed) Received: from UCBKIM.BERKELEY.ARPA by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00384; 2 Feb 83 08:10:26 PST (Wed) Received: by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA00477; 2 Feb 83 08:14:35 PST (Wed) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA26020; 2-Feb-83 08:19:19-PST (Wed) To: franz-friends@ucbvax I've broken the franz-friends mailing list over two machines. I hope that this will fix the problem of mail to franz-friends crashing ucbvax every thirty minutes. If you get multiple copies of this message, please do not tell me about it, I will already know. From jkf Thu Feb 10 21:45:17 1983 Date: 10-Feb-83 21:45:17-PST (Thu) From: jkf (John Foderaro) Subject: liszt 8.21 Message-Id: <8301110545.16021@UCBKIM.BERKELEY.ARPA> Received: by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA16021; 10-Feb-83 21:45:17-PST (Thu) To: local-lisp more functions open coded: vsize, vsize-byte, vsize-word, vectorp, vectorip From PSI.KROHNFELDT@UTAH-20 Fri Feb 11 15:09:11 1983 Date: 11 Feb 1983 1601-MST From: Jed Krohnfeldt <PSI.KROHNFELDT@UTAH-20> Subject: cfasl Message-Id: <8301112302.7475@UCBVAX.BERKELEY.ARPA> Received: from UTAH-20 by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA07475; 11 Feb 83 15:02:05 PST (Fri) Received: by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA07565; 11 Feb 83 15:06:37 PST (Fri) Received: from UCBVAX.BERKELEY.ARPA by UCBKIM.BERKELEY.ARPA (3.256 [12/5/82]) id AA14422; 11-Feb-83 15:09:11-PST (Fri) To: Franz-friends@UCBVAX I am having trouble using cfasl in franz 38.04. I keep getting the message "ld: /usr/ucb/lisp : no namelist". Can anyone decipher this for me? Thanks... ------- From apm@cmu-ri-isl Mon Feb 14 07:31:54 1983 Date: 14 Feb 1983 10:24:21-EST From: Andrew.Mendler@CMU-RI-ISL Subject: franz lisp under5 vms 3.0 Message-Id: <8302141531.27879@UCBVAX.ARPA> Received: from CMU-RI-ISL by UCBVAX.ARPA (3.310/3.3) id AA27879; 14 Feb 83 07:31:54 PST (Mon) Received: by UCBKIM.ARPA (3.310/3.3) id AA01172; 14 Feb 83 15:50:41 PST (Mon) To: franz-friends@BERKELEY.ARPA Does anyone have a copy of Franz Lisp and the compiler that works under VMS version 3.0? From @udel-relay:tim.unc@UDel-Relay Mon Feb 14 02:52:18 1983 Date: 13 Feb 83 14:34:48 EST (Sun) From: Tim Maroney <tim.unc@UDel-Relay> Subject: cfasl: no namelist Return-Path: <tim.unc@UDel-Relay> Message-Id: <8302141052.25792@UCBVAX.ARPA> Received: from udel-relay.ARPA by UCBVAX.ARPA (3.310/3.3) id AA25792; 14 Feb 83 02:52:18 PST (Mon) Received: by UCBKIM.ARPA (3.310/3.3) id AA02234; 14 Feb 83 16:18:42 PST (Mon) To: franz-friends@BERKELEY.ARPA Via: UNC; 14 Feb 83 5:43-EST I don't seem to be able to write Jed Krohnfeldt, and this answer is probably of general interest anyway. The message "ld: no namelist" means that some well-meaning system admin has stripped the lisp executable file to save space; unfortunately, this makes the dynamic loading used by cfasl impossible. Lisp will have to be recompiled (groan). No Franz Lisp executable file should EVER be stripped. Tim Maroney tim.unc@udel-relay decvax!duke!unc!tim From Mark.Sherman@CMU-CS-A Sat Feb 12 21:38:46 1983 Date: 13 February 1983 0034-EST (Sunday) From: Mark.Sherman@CMU-CS-A Subject: Space and Leakage Message-Id: <13Feb83 003422 MS40@CMU-CS-A> Received: from CMU-CS-A by UCBVAX.BERKELEY.ARPA (3.300 [1/17/83]) id AA07842; 12 Feb 83 21:38:46 PST (Sat) Received: by UCBKIM.ARPA (3.310/3.3) id AA02341; 14 Feb 83 16:21:29 PST (Mon) To: franz-friends@UCB-VAX Can someone tell me how the maximum amount of storage that franz lisp uses is decided? I can force the size up to (about) 3050 pages (according to "ps") and then get the message "storage exhausted". I have been told (and have seen) other jobs get substantially more space; can franz get more pages as well? (I am using the cshell and have already used the limit command to raise my process size up to 32 megabytes, or so I think.) I have also been told that the garbage collector leaks, that is, not all of the garbage is really collected. Does anyone have good ideas about how much (or fast) this happens, or if there is some way to minimize the lost space? (Please send responses directly to me as I am not on this list.) -Mark Sherman (Sherman@CMU-CS-A) From @udel-relay:Mac.uvacs.Virginia@UDel-Relay Fri Feb 18 21:04:31 1983 Date: 18 Feb 83 12:42:40-EST (Fri) From: Mac.uvacs@UDel-Relay Subject: global nonspecial variables Return-Path: <Mac.uvacs.Virginia@UDel-Relay> Message-Id: <8302190504.26020@UCBVAX.ARPA> Received: from udel-relay.ARPA by UCBVAX.ARPA (3.312/3.5) id AA26020; 18 Feb 83 21:04:31 PST (Fri) Received: by UCBKIM.ARPA (3.310/3.5) id AA00656; 21 Feb 83 01:59:26 PST (Mon) To: FRANZ-FRIENDS@BERKELEY.ARPA Via: Virginia; 18 Feb 83 23:58-EST Does the Liszt compiler have any notion of global variables -- free variables with fast access, without any rebinding? I think the MACLISP compiler has something like this for variables beginning "**". Alex Colvin uucp: ...decvax!duke!mcnc!ncsu!uvacs!mac csnet:mac@virginia arpa: mac.uvacs@udel-relay From jkf@UCBKIM Mon Feb 21 09:19:56 1983 Date: 21 Feb 83 09:19:43 PST (Mon) From: jkf@UCBKIM (John Foderaro) Subject: Re: global nonspecial variables Message-Id: <8302211719.2798@UCBKIM.ARPA> Received: by UCBKIM.ARPA (3.310/3.5) id AA02798; 21 Feb 83 09:19:43 PST (Mon) Received: from UCBKIM.ARPA by UCBVAX.ARPA (3.314/3.5) id AA13982; 21 Feb 83 09:11:52 PST (Mon) Received: from UCBVAX.ARPA by UCBKIM.ARPA (3.310/3.5) id AA02805; 21 Feb 83 09:19:56 PST (Mon) To: Mac.uvacs@UDel-Relay, FRANZ-FRIENDS@BERKELEY.ARPA In-Reply-To: Your message of 18 Feb 83 12:42:40-EST (Fri) I don't understand the distinction between what you call a global variable and a special variable. A special variable in Franz Lisp (and any other shallow bound lisp) can be accessed rapidly and is only rebound if you put it in a lambda, prog or do variable list. From jkf@UCBKIM Fri Feb 25 08:29:01 1983 Date: 25 Feb 83 08:28:45 PST (Fri) From: jkf@UCBKIM (John Foderaro) Subject: research position at edinburgh Message-Id: <8302251628.528@UCBKIM.ARPA> Received: by UCBKIM.ARPA (3.310/3.5) id AA00528; 25 Feb 83 08:28:45 PST (Fri) Received: from UCBKIM.ARPA by UCBVAX.ARPA (3.314/3.5) id AA00867; 25 Feb 83 08:18:48 PST (Fri) Received: from UCBVAX.ARPA by UCBKIM.ARPA (3.310/3.5) id AA00537; 25 Feb 83 08:29:01 PST (Fri) To: franz-friends@BERKELEY.ARPA DEPARTMENT OF ARTIFICIAL INTELLIGENCE UNIVERSITY OF EDINBURGH RESEARCH FELLOW A Research Fellowship is available within the Programming Systems Development Group. The post has been created specifically to provide a modern LISP system for the Perq computer running under ICL MicroCode UNIX, and is funded by the Science and Engineering Research Council. Experience in implementing systems would be advantageous, as would be a knowledge of LISP and C. Access will be available to an SERC DECsystem-10 running TOPS-10 and to a University VAX 750 running Berkeley UNIX, as well as to Perqs. The appointment will be made on the salary range 1B/1A, 5550 - 10670 pounds sterling, according to age and experience. The post is funded for a period of two years from the date of appointment. Further particulars of the post can be obtained from: Administrative Assistant Department of Artificial Intelligence University of Edinburgh Forrest Hill Edinburgh EH1 2QL SCOTLAND phone 031-667-1011 x2554 or by contacting RAE%EDXA%UCL-CS@ISID (Networks permitting) Applications should be made by March 17th, 1983.