6/2/71 - JONL -
THERE IS A NEW NLISP WHICH SHOULD BECOME THE SYSTEM LISP
WITHIN A FEW SHORT WEEKS. NOTE WELL: ITEMS 1-4 BELOW DESCRIBE
CHANGES THAT ARE AT VARIANCE WITH THE DOCUMENTATION OF THE PREVIOUS
NLISP NOTE.
1) *** DELETED ***
2) SIGNP IS NOW A FSUBR. THE FIRST ITEM IN THE ARGLIST IS AN
INDICATOR FOR COMPARISON TO ZERO, E.G., (SIGNP LE N) IS NON-NIL
IF AND ONLY IF THE VALUE OF N IS A NUMBER LESS THAN OR EQUAL TO
ZERO [SIGNP DOES NOT REQUIRE N TO BE OF NUMBER TYPE]. THE
INDICATORS FOLLOW THE PDP-10 ARITHMETIC COMPARISON INSTURCTIONS, AND
SHOULD BE SELF EXPLANATORY: - L E LE A GE N G
3) INTERRUPTING CONDITIONS WHICH THE USER MAY TRAP AND SERVICE WITH
EXPR CODE HAVE BEEN EXPANDED, AND MODIFIED SLIGHTLY. IN ADDITION
TO THOSE MENTIONED IN THE LAST NOTE, ON CAN NOW TRAP OUT ON UNDEFINED
FUNCTION ERROR, UNBOUND VARIABLE ERROR, WRONG TYPE OF ARGUMENT
ERROR, AND MISSING PROG TAG ERROR. IF THE USER'S SERVICE FUNCTION
FOR THESE FOUR TRAPS RETURNS A NON-NIL VALUE, IT IS ASSUMED TO BE A
LIST OF THE CORRECTED ITEM. THUS ONE MIGHT HAVE A FUNCTION
OF THIS NATURE RETURN '(0) WHENEVER NIL SHOWS UP AS AN
ARGUMENT TO PLUS [ETC]. ORDINARILY, ONE WOULD HAVE SUCH
FUNCTIONS REQUEST SOME CONSOLE INTERACTION WITH THE USER, PERHAPS
WITH THE FUNCTION BREAK, BUT ONE ANTICIPATED USE OF THE UNDEFINED
FUNCTION TRAP IS TO SEARCH A FILE FOR A DEFINITION FOR THE FUNCTION
AND LOAD IT IN IF FOUND.
NOTE WELL: THE WAY IN WHICH INTERRUPT FUNCTIONS ARE
SPECIFIED HAS CHANGED. DISREGARD THE DESCRIPTION IN THE PREVIOUS
NOTE. TO SET A FUNCTION F [WHICH MUST BE A FUNCTION OF ONE ARGUMENT]
TO SERVICE INTERRUPT NUMBER N, DO (SSTATUS INTERRUPT N 'F) . THE
INTERRUPT CONDITIONS WHICH THE USER MAY TRAP ARE:
NUMBER MEANING
1 <CONTROL>-H TYPED ON JOB CONSOLE - CURRENTLY PRESET
TO A SIMPLE BREAK BY THE SYSTEM.
2 <CONTROL>-A TYPED ON JOB CONSOLE. NOT ALSO THAT
THE VALUE OF THE ATOM ^A IS CHANGED BY THE TYPING
OF <CONTROL>-A REGARDLESS OF THE USER'S TRAP.
3 ALARMCLOCK EXPIRATION.
4 AN ERROR HAS OCCURRED WITHIN THE SCOPE ON AN ERRSET,
AND THE ERRSET IS ABOUT TO RETURN A NIL. OTHERWISE,
AN ERROR OCCURING UNDER AN ERRSET COMPUTATION WILL
NOT ACTIVATE THE USER'S TRAP, BUT SIMPLY CAUSE THE
ERRSET TO RETURN NIL.
5 UNDEFINED FUNCTION.
6 UNBOUND VARIABLE.
7 ARGUMENT NOT OF CORRECT TYPE.
8 ATTEMPTED GO TO A NON-EXISTANT PROG TAG.
THE SERVICE FUNCTIONS FOR INTERRUPTS 1-4 CURRENTLY HAVE NIL GIVEN TO
THEM AS ARGUMENT; BUT FOR INTERRUPTS 5-8 THE OFFENDING OBJECT IS
PASSED ALONG AS ARGUMENT. SUGGESTIONS FOR FURTHER REFINEMENTS OF
THIS SCHEME ARE INVITED FROM THE USING COMMUNITY.
4) THE FUNCTION BAKGAG IS NO LONGER WITH US, AND THERE IS NO MORE
AUTOMATIC PRINT OUT OF A BACKTRACE WHEN AN ERROR OCCURS. HOWEVER,
THE FUNCTIOPCKTRACE WILL STILL PRINT OUT A BACKTRACING, AND
THE FUNCTIION OF *RSET HAS BEEN EXPANDED TO INCLUDE THAT OF THE
PREVIOUS BAKGAG: WHENEVER A PROGRAM IS RUNNING IN *RSET MODE [SEE
PREVIOUS NLISP NOTE], ADDITIONAL CRUFT IS STORED ON THE SYSTEM PDL
SO THAT A (BAKTRACE) WILL BE WONDERFULLY CLEAR.
5) THERE IS A NEW FUNCTION: (EXPT X N) COMPUTES X TO THE NTH POWER,
WHERE N IS A FIXED-POINT NUMBER AND X IS ANY NUMBER. IT RUNS FASTLY.
6) SOME IMPORTANT REMINDERS!!
THE FOLLOWING ITEMS HAVE BEEN DOCUMENTED ELSEWHERE, BUT BECAUSE OF
THE PREVALENCE OF MISUNDERSTANDING ABOUT THEM, THEY ARE REPRODUCED
HERE.
A) (MAKOBLIST NIL) RETURNS A LIST OF LISTS, LIKE THE OLD STYLE
OBLIST. AN OBLIST IS NOT NORMALLY KEPT AROUND IN THE SYSTEM,
BUT RATHER AN OBARRAY. (MAKOBLIST 'NEWOB) WILL COPY THE
CURRENT OBARRAY AND ATTACH IT AS THE ARRAY PROPERTY OF THE
ATOM NEWOB. ONE CAN LAMBDA-BIND AND SETQ THE ATOM OBARRAY
IN ORDER TO CHANGE OBARRAYS.
B) MAKNAM HAS NONE OF THE IDIOSYNCRATIC SYNTAX FEATURES OF THE
FUNCTION READ. IT ALWAYS COMPRESSES A LIST OF CHARACTERS
INTO A NEW ATOM WHICH IS NOT INTERNED ON THE OBARRAY.
C) EXPLODE AND EXPLODEC ALWAYS BUT ALWAYS PRODUCE SINGLE
CHARACERT PNAME-TYPE ATOMS. THUS (EXPLODEC 1.2) WOULD
PRINT OUT AS (/1 /. /2)
D) IF ONE USES > WITH UREAD, AS IN (UREAD FOO >), THEN
(STATUS UREAD) WILL RETURN A LIST OF THE ACTUAL FILE NAMES
AND DEVICE WHICH WOULD PRINT OUT AS, SAY, (FOO /12 DSK JONL)
BUT A SUBSEQUENT CALL TO UFILE WITH NO ARGUMENTS (UFILE)
WOULD CAUSE AN OPEN OUTPUT FILE TO BE FILED AWAY AS FOO 13
E) A MINOR GLITCH CONDITION HAS BEEN CORRECTED FOR SPLICING-TYPE
READ MACROS; IF ONE IS ENCOUNTERED AT THE TOP-LEVEL READ
[RATHER THAN WHILE READING THE ELEMENTS OF A LIST] THEN ITS
VALUE IS IGNORED AND READ TRIES AGAIN. HENCE SUSSMAN'S
SEMI-COLON MACRO WILL WORK AS DESIRED.