User Tools

Site Tools


tutorials:interlisp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorials:interlisp [2024/10/06 11:23]
papa
tutorials:interlisp [2024/10/09 01:58] (current)
papa
Line 9: Line 9:
 At the time of its creation, what distinguished Interlisp from most other programming languages and systems was that it attempted to provide the user with a complete set of tools for making it possible for him or her to accomplish the desired task as easily as possible. Listed below are a brief summary of some of the more interesting features, and complete details are found in the __Interlisp Reference Manual__((Warren Teitelman. Interlisp Reference Manual. (1978). Accessed: October 6, 2024. [Online]. Available: https://www.softwarepreservation.org/projects/LISP/interlisp/Interlisp-Oct_1978.pdf)). At the time of its creation, what distinguished Interlisp from most other programming languages and systems was that it attempted to provide the user with a complete set of tools for making it possible for him or her to accomplish the desired task as easily as possible. Listed below are a brief summary of some of the more interesting features, and complete details are found in the __Interlisp Reference Manual__((Warren Teitelman. Interlisp Reference Manual. (1978). Accessed: October 6, 2024. [Online]. Available: https://www.softwarepreservation.org/projects/LISP/interlisp/Interlisp-Oct_1978.pdf)).
  
-  * **Editor** -- Interlisp has a list structure oriented editor for easy modification of functions, property lists and variable values without having to leave Interlisp to use  a text editor. See [[#Editor Basics]].+  * **Editor** -- Interlisp has a list structure oriented editor for easy modification of functions, property lists and variable values without having to leave Interlisp to use  a text editor. 
   * **Break package** -- A package for giving control to he user when an error occurs so variable values can be examined and other tests preformed. It also includes the ability to set breakpoints and trace functions.   * **Break package** -- A package for giving control to he user when an error occurs so variable values can be examined and other tests preformed. It also includes the ability to set breakpoints and trace functions.
   * **File package** -- A set of functions which are fully integrated into the system to keep track of what files source and compiled versions of functions reside, and automatically maintaining updated versions of these files when changes are made.   * **File package** -- A set of functions which are fully integrated into the system to keep track of what files source and compiled versions of functions reside, and automatically maintaining updated versions of these files when changes are made.
   * **Record package** -- A package for creating record structures which allow one's code to be written independent of the data structures acutally chosen for the implementation.   * **Record package** -- A package for creating record structures which allow one's code to be written independent of the data structures acutally chosen for the implementation.
   * **DWIM** -- "Do What I Mean" -- a spelling corrector which attempts to fix spelling errors and other obvious mistakes.   * **DWIM** -- "Do What I Mean" -- a spelling corrector which attempts to fix spelling errors and other obvious mistakes.
-  * **CLISP** -- "Conversational LISP" -- A package which allows the user to write in an ALGOL-like lisp notation including FOR and WHILE loops, and a simple syntax for record references, functions like CAR and CDR, and infix arithmetic operators. See [[#CLISP Syntax]].+  * **CLISP** -- "Conversational LISP" -- A package which allows the user to write in an ALGOL-like lisp notation including FOR and WHILE loops, and a simple syntax for record references, functions like CAR and CDR, and infix arithmetic operators. 
   * **Helpsys** -- An on-line help and documentation facility. //(Not available on TWENEX.)//   * **Helpsys** -- An on-line help and documentation facility. //(Not available on TWENEX.)//
   * **Masterscope** -- A program for analyzing the structure of large programs and answering questions like "What functions call FOO" or "EDIT functions which reference MUMBLE freely"   * **Masterscope** -- A program for analyzing the structure of large programs and answering questions like "What functions call FOO" or "EDIT functions which reference MUMBLE freely"
Line 21: Line 21:
  
 Start Interlisp with the EXEC command ''@INTERLISP:LISP''. Return to EXEC with the Interlisp command ''LOGOUT()'' or Ctrl-C. Start Interlisp with the EXEC command ''@INTERLISP:LISP''. Return to EXEC with the Interlisp command ''LOGOUT()'' or Ctrl-C.
- 
-===== Example Session ===== 
- 
-For an example of basic Interlisp usage (defining a function, debugging, and saving it to a file), see [[https://papa.sdf.org/cave/twenex/interlisp-ex.html|Interlisp Example Session on TWENEX]]. 
  
 ===== Interlisp Tips ===== ===== Interlisp Tips =====
Line 30: Line 26:
   * Although the Interlisp programming language is not identical to Lisp 1.5, Clark Weissman's __Lisp 1.5 Primer__((Clark Weissman. Lisp 1.5 Primer. (1967). Accessed: October 3, 2024. [Online]. Available: http://www.softwarepreservation.org/projects/LISP/book/Weismann_LISP1.5_Primer_1967.pdf)) is recommended as an introduction for Interlisp users.   * Although the Interlisp programming language is not identical to Lisp 1.5, Clark Weissman's __Lisp 1.5 Primer__((Clark Weissman. Lisp 1.5 Primer. (1967). Accessed: October 3, 2024. [Online]. Available: http://www.softwarepreservation.org/projects/LISP/book/Weismann_LISP1.5_Primer_1967.pdf)) is recommended as an introduction for Interlisp users.
   * The Interlisp top-level prompt character is a "_"   * The Interlisp top-level prompt character is a "_"
-  * Interlisp supports both upperand lower-case characters, and names are case-sensitiveNames of core functions are defined in uppercasebut the DWIM facility can automatically correct incorrect capitalization.+  * The Interlisp top-level allows expressions to be entered over multiple lines. Type a carriage-return to continue input on a new lineTo make Interlisp evaluate an input expressiontype a right parenthesis to close the last open left parenthesis. (Interlisp will append a carriage-return automatically.)
   * The Interlisp top-level accepts commands in either of two formats:   * The Interlisp top-level accepts commands in either of two formats:
     - EVAL format: ''(//s-expression//)''     - EVAL format: ''(//s-expression//)''
     - EVALQUOTE format: ''//function//(//arguments//)''      - EVALQUOTE format: ''//function//(//arguments//)'' 
 +  * Interlisp supports both upper- and lower-case characters, and names are case-sensitive. Names of core functions are defined in uppercase, but the DWIM facility can automatically correct incorrect capitalization.
   * The Interlisp read program treats square brackets ("]") as "super-parentheses": a right square bracket automatically supplies enough right parentheses to match back to the last left square bracket (in the expression being read), or if none has appeared, to match the first left parentheses, e.g., ''(A (B (C] => (A (B (C)))'', ''(A [B (C (D] E) => (A (B (C (D))) E)''   * The Interlisp read program treats square brackets ("]") as "super-parentheses": a right square bracket automatically supplies enough right parentheses to match back to the last left square bracket (in the expression being read), or if none has appeared, to match the first left parentheses, e.g., ''(A (B (C] => (A (B (C)))'', ''(A [B (C (D] E) => (A (B (C (D))) E)''
   * You can insert comments in your Interlisp code with ''(* //comment//)''. Comments will be included when functions are saved to a file, and displayed with the function definition by __getd__. __Prettyprint__ displays all comments as "%%**%% COMMENT %%**%%"   * You can insert comments in your Interlisp code with ''(* //comment//)''. Comments will be included when functions are saved to a file, and displayed with the function definition by __getd__. __Prettyprint__ displays all comments as "%%**%% COMMENT %%**%%"
Line 51: Line 48:
 |Backspace|Erase the last character typed in, echoing a "\" and the erased character. | |Backspace|Erase the last character typed in, echoing a "\" and the erased character. |
  
-===== Editor Basics =====+===== Example Session ===== 
 + 
 +For an example of basic Interlisp usage (defining a function, debugging, and saving it to a file), see [[https://papa.sdf.org/cave/twenex/interlisp-ex.html|Interlisp Example Session on TWENEX]]. 
 + 
 +===== Interlisp Editor ===== 
 + 
 +For an introduction to Interlisp's list structure oriented editor, see [[https://papa.sdf.org/cave/twenex/interlisp-editor.html|The Interlisp Editor]]. 
 + 
 +===== Hello, World! ===== 
 + 
 +The example session referenced above defines a recursive factorial function. Below is one way to define a Hello, World! function in Interlisp. After typing the definition, run the function by typing ''HELLO()''.
  
-To edit function FOO, type ''EDITF(FOO)''. Use __editv__ to edit the value of a variable__editp__ to edit a property list, or __edite__ to edit an arbitrary expression. The editor's command prompt character is a "*"+  (DEFINEQ 
 +  (HELLO 
 +    [LAMBDA NIL                                   (* edited: 
 +                                                  " 6-Oct-2024 23:") 
 +      (PRIN1 "HelloWorld!")                     (Print string without 
 +                                                  quotation marks, then 
 +                                                  CR-LF on standard 
 +                                                  output) 
 +      (TERPRI]) 
 +  ) 
 +  
  
-===== CLISP Syntax ===== 
  
  
tutorials/interlisp.1728213790.txt.gz · Last modified: 2024/10/06 11:23 by papa