[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Summary of Interlisp system changes



Compatibility with other Interlisp implementations:

(SYSTEMTYPE)							[Function]
 Returns one of TOPS20, TENEX, D, JERICHO, VAX. Most implementations
have a compile-time optimization for (SELECTQ (SYSTEMTYPE) --)

(COMPILEMODE)							[Function]
	Returns one of PDP-10, D, JERICHO, VAX. For EVAL@COMPILE
    conditionalization. Not the same as SYSTEMTYPE to allow 
    cross-compilation.

COMPILE.EXT							[Variable]
	Be sure to reference compiled files via a PACKFILENAME with
	COMPILE.EXT rather than binding the ".COM" extension into your
	program.

	(the FILES file package command is another way of referencing
	files without explicitly naming compile-extension).

	e.g.,
	(LOAD (PACKFILENAME 'NAME FOO 'EXTENSION COMPILE.EXT]
	rather than (LOAD 'FOO.COM]

- - - - - - - - - - -
BQUOTE: 	A "BACKQUOTE" facility

This is similar to the facility of the same name in other common lisp dialects as
follows:

(BQUOTE FORM) is like  to (QUOTE FORM) except that, in the body
of FORM, an element preceded by a "," is evaluated, an element preceded by ",@"
is evaluated and spliced in using APPEND and an element preceded by ",." is
spliced in, using NCONC.

For example, (BQUOTE (A , B ,@ C D)) is equivalent to
	(CONS (QUOTE A)
		(CONS B (APPEND C (QUOTE (D].

As a shorthand, (BQUOTE form) can also be typed in as |'FORM. In this case,
the comma forms are automatically parsed without following them with spaces,
e.g., |'(A B ,C) reads in as (BQUOTE (A B , C)). This format is also recognized
on files. Vertical bar was chosen since it normally is treated as a separator in
files. 

Vertical-bar, both in typein and in files, has also been "overloaded" to introdoce
HPRINT-format expressions. This facility makes it possible, although not
particularly convenient, to type in circular lists and arbitrary other data
structures.
- - - - - - - -
ARRAY types expanded

The ARRAY function now accepts any
"type" which is legal in datatypes, and coerces it into the next "enclosing"
ARRAY type. Since the low-level system only allows arrays of type FIXP,  or POINTER,
 types are coerced. However, this allows programmers to specify more exactly
what they intend.


- - - - - - - - - - - - - - - - - - - - - -
Masterscope expands MACRO definitions

When it encounters a macro which has no template and is not otherwise defined
or is a NLAMBDA.

Masterscope only looks at MACRO properties (and not 10MACRO, DMACRO, etc.)
in the theory that the machine-dependent properties are more likely "optimizers".
Also, this avoids the problem of Masterscope having to worry about those
properties which are really part of the compiler, and which contain calls to
internal compiler functions.

------------------------------------------------------------
WITH construct in record package:

(WITH <record-name> <record-instance> . <forms>)  	[special form]

The WITH construct can be used to talk about the fields of a record as if they
were variables within a lexical scope.  <record-name> is the name of a record,
and <record-instance> is an expression which evaluates to an instance of that
record. The expressions in <forms> are evaluated in a way where references to
variables which are field-names of <record-name> are implemented via
field-fetches and SETQs of those variables are implemented via
field-replacement. 

For example, given 
	(RECORD RECN (FLD1 FLD2))
	(SETQ INST (CREATE RECN FLD1 _ 10 FLD2 _ 20))

Then the construct

(with RECN INST
	(SETQ FLD2 (PLUS FLD1 FLD2]

is equivalent to
 (replace FLD2 of INST with (PLUS (fetch FLD1 of INST) (fetch FLD2 of INST]

Note that the substitution is lexical: this operates by actually doing a substitution
inside <forms>.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
New FILEPKG command:  INITVARS

INITVARS is used for initializing variables--setting their values only when they
are currently NOBIND.  A variable value defined in an INITVARS command will
not clobber the current value.  This means that re-loading files to work on some
aspect will not change the variable values.

The format of an INITVARS command is just like VARS, except that the atomic
form does not make sense; all elements are lists (var defaultvalue).

INITVARS puts out a RPAQ? command on the file instead of RPAQ.  This is
a new function that has been added to the system in this release.  Hence,
INITVARS will not load into older releases.
- - - - - -
Change to FILE, FILECHANGES properties and FILECREATED expression on
files:

The file package now keeps better track of what changes are made to a file to
disambiguate from changes to items of different file package types. For example,
if you change the FOO record, the change will get posted in a (RECORDS --
FOO --) section. Changes to a FOO function will appear in a separate (FNS --
FOO --) section.