Thursday  June 07,1979    FQ+5D.11H.58M.56S.		- Jonl - 

1) Value of "MAKHUNK" permits use of a new HUNK2 space.
2) HUNKs now have a PRINT syntax, and can be FASLOADed
3) Added comma syntax for backquote selects NCONC rather than APPEND
4) Backquote macro permits "grindef"ing in format exactly as read in.
5) The famous but Kludgy Binford Editor is now autoloadable.
6) Remaining hooks into TOPLEVEL/BREAK loop
7) LAST-MACROEXPANDED-LOSER  is gone.

8) RPLACX now is open-coded by COMPLR (in the same way that CXR is)
9) New compiler switch:  HUNK2-TO-LIST, with switch letter "2".

_______________________________________________________________________


1) Value of "MAKHUNK" permits use of a new HUNK2 space.
   The value of the special variable MAKHUNK controls whether hunks 
   of size 1 and 2 are stored in LIST space, or in a HUNK2 space.   
   MAKHUNK = T says use HUNK2;  initial setting is MAKHUNK = T.
   The compiler will rewrite forms like "(HUNK x)" and "(HUNK x y)"
   into appropiate calls to NCONS or CONS, depending on the value of
   the new compiler switch "HUNK2-TO-LIST" - see the comment below.

2) HUNKs now have a PRINT syntax, and can be FASLOADed
   When "MAKHUNK" is non-null, certain formats will be recognized by
   the reader as presenting HUNKs; when "MAKHUNK" is null, these formats
   will be treated as previously, namely erroneous.   Any "S-expression" 
   presented like a list, but with more than one dot, or with a dot 
   immediately before the final parens, will be read-in as a HUNK.  E.g.
	(A . B . C),  (A . B .)   as well as (A .)
   PRINT will always put the dot before the final parens.
   FASLAP can output hunks, in case any should be incorporated into your
   expr code; and FASLOAD can load them back in.

3) Added comma syntax for backquote selects NCONC rather than APPEND
   The form ",." in addition to ",@" is recognized by the backquote
   feature.  ",." selects NCONC instead of APPEND, and thus we have
     `(,@B C)  generates  (APPEND B '(C))   
     `(,.B C)  generates  (NCONC B '(C))   
   [This idea, for  ",." comes from RBR]

4) Backquote macro permits "grindef"ing in format exactly as read in.
    The "backquote" macro now has the option of generating 
    "macroified" code, with the name  |`-expander/|| as a primary 
    eval-time macro.  This option will be exercised if 
    BACKQUOTE-EXPAND-WHEN is "EVAL" (or in general anything except 
    "READ"), and otherwise the expansion will occur at read-in time 
    just as at present.  Three other internal markers are added:
    |`,/||  |`,@/||  and |`,./||. 
    GRINDEF would print out a form just like it was read-in, using
    the READMACROINVERSE feature;  however, there is a flaw in this
    feature in that readmacros won't appear in the CDR part of
    a list;  thus you never see '(A . 'B)  grindef'd out that way.
    For the same reason, it would be somewhat of a pain to get
    `(A . ,B) to grindef out that way, but `(A ,@B) and `(A ,.B)
    both win.  Note the weird commutation:  `(A . ,B) works the
    same as `(A ,. B)  ??
    All the aforesaid "markers" and macros are on the obarray, so that
    any PRINTing or GRINDEFing (regardless of the success of the
    READMACROINVERSE attempts)  would be readable back in with no loss
    of functionality.   All such markers (and other parts of this feature)
    are automatically autoloaded.

5) The famous but Kludgy Binford Editor is now autoloadable.
   Thus it is no longer part of the initial ITS maclisp environment.
   REMEMBER: 	 	holds the last thing killed
		 	holds the "back-upwards" list
		^^^ 	holds the "back-leftwards" list
		EDIT 	hold a list of the names for "editible" properties
		"S", that is the search command, with no trailing arguments,
		    means to search again for the same thing as before.
		Both "S" and "I" take arbitrarily many trailing arguments,
		    terminated by <alt-mode><altmode><space>
   Also, any symbol with an EDIT property may be an edit command,
   wherein the function stored under the EDIT property is applied
   to a number:   0      means no numeric arg to function
		  n > 0  is the numeric argument given to the command

6) Remaining hooks into TOPLEVEL/BREAK loop
   The following special global variables are now in the system, and 
   they also have respectively a SUBR property corresponding to the
   system-supplied code for the parallel top-level operations:
      READ-EVAL-*-PRINT for "prin1" part of the loop, 	subr of 1 arg
      READ-EVAL-PRINT-* for "terpri" part of the loop, 	subr of 0 args
      *-READ-EVAL-PRINT for "read" part of the loop, 	subr of 0 args
      READ-*-EVAL-PRINT for "eval" part of the loop, 	subr of 1 arg
   The "LISP RECENT" note of May 15,1978 mentioned two of these as 
   "hooks" into the TOPLEVEL/BREAK loop;  the number of these hooks is
   thus now extended to include the full set possible.  Recall that each 
   such function "intercepts" the TOPLEVEL/BREAK loop at the point of the
   "*" in its PNAME.   Thus one pass through the loop would look essentially
   like:
      (AND *-READ-EVAL-PRINT (FUNCALL *-READ-EVAL-PRINT))     ;"intercept"
      (SETQ * (*-READ-EVAL-PRINT)			      ;TOP-LEVEL-READ
      (AND READ-*-EVAL-PRINT (FUNCALL READ-*-EVAL-PRINT  *))  ;"intercept"
      (SETQ * (READ-*-EVAL-PRINT  *))			      ;TOP-LEVEL-EVAL
      (AND READ-EVAL-*-PRINT (FUNCALL READ-EVAL-*-PRINT  *))  ;"intercept"
      (READ-EVAL-*-PRINT  *)				      ;TOP-LEVEL-PRINT
      (AND READ-EVAL-PRINT-* (FUNCALL READ-EVAL-PRINT-*))     ;"intercept"
      (READ-EVAL-PRINT-*)				      ;TOP-LEVEL-TERPRI


7) LAST-MACROEXPANDED-LOSER  is gone.
   It used to do something in macros defined by DEFMACRO.

8) RPLACX now is open-coded by COMPLR (in the same way that CXR is)

9) New compiler switch:  HUNK2-TO-LIST, with switch letter "2".
   causes  "(HUNK x)"  to compile like  "(NCONS x)",  and  "(HUNK x y)" 
   to compile like "(CONS x y)".   Initial setting is (), so that
   hunk calls are output;  in the object environment, a hunk call may
   actually produce a list cell if MAKHUNK is null.