1
0
mirror of synced 2026-01-12 00:42:56 +00:00
Interlisp.medley/lispusers/DEMO-FEATURES.TEDIT
Larry Masinter 49cb172e3d
Start of a DEMO facility to run demos from inside Medley (#1118)
* Start of a DEMO facility to run demos and part of automatied testing from inside Medley

Originally done for the BALISP 2023 talk. Possibly of use for building tests as well as demos.
2024-02-23 17:55:20 -08:00

113 lines
7.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Medley Interlisp
Features Demos
2
A Residential Programming Environment
supports Incremental Development
A residential programming environment is one in which you define, edit, debug in the live environment; write out to files to save for future session. The system tracks what changed. Multiple features work together, to act as a "programmer's assistant":
DWIM - Do What I Mean, Spelling Correction: DWIM is more than just spelling correction; it's more an attitude -- not to signal errors if what the user meant is obvious and correctable.
(DEFINEQ (FOO1 (X) (PLUSS X X] <-- PLUS misspelled.
< Note [] superparenthesis.
PP FOO1
(FOO1 6]
y
PP FOO1
History and UNDO: Interlisp was the first known system. DWIM changes are undoable.
??
UNDO <dwim event>
PP* FOO1
- The file manager tracks what's been defined or changed. The file "coms" are like a manifest -determines what goes where.
FILES?)
y FILEB
(CLEANUP)
SEE FILEB
- Helpsys and DInfo (also a first) interactive documentation
MAN INFILE
MAN CL:WITH-OPEN-FILE
MAN CLHS.OPENER
<right click DInfo>
- Masterscope (interactive cross reference) has an extensible english-like language for querying
LOAD(HELPSYS PROP)
. ANALYZE ON HELPSYS
. SHOW WHERE ANY CALLS CLHS.OPENER
USE EDIT FOR SHOW
. SHOW PATHS FROM HELPSYS
2
Common Lisp and Interlisp Integration
an Inter-medley of Uncommon Lisps
- freely intermix CL and IL function, macro, variable definitions
- All datatypes are common: lists, NIL, symbols, arrays, strings, structures, numbers
- many functions and special forms are the same: CAR, COND, ED
- Some are slightly different: CL:EVAL vs. IL:EVAL, CL:LAMBDA vs. IL:LAMBDA, ...
- Extend CL to include IL and IL to include CL
- Common Lisp definitions and declarations managed by Interlisp environment
Demo:
. SHOW WHERE ANY ON HELPSYS CALLS CL:WHEN
USE EDIT FOR SHOW
2
Structure editors
EDITMODE(TELETYPE) original structure editor: powerful, programmable, short commands (BO 3) P (SW 1 2). Useful for editing huge list structures or Lisp functions.
EDITMODE(DEDIT) (Load it to try). Like the TTY editor with menu and showing the results in a window.
EDITMODE(SEDIT:SEDIT) Default editor. SEdit maintains illusion that you are editing structure. Parentheses are balanced at all times, but you can just type and backspace. Keyboard controls and attached menu.
Common to all: user never counts parentheses, modifies whitespace, or needs to fiddle with line breaks or indentation
2
The Virtual Machine and OS
- D-machines had microcode to interpret a bytecoded insruction set. Subsequently, the microcode was reimplemented in C (named"maiko".
- "Sysouts" (memory images) can be moved from machine to machine; only maiko needs to have been compiled for each OS and chip architecture.
- Medley is small (relatively speaking). Bytecodes are compact. Medley online uses 16MB/user (64MB max). Installed, 256mb max. Time to make new image 15 seconds; restart a saved image "in the blink of an eye".
- Interlisp-D was the whole operating system: scheduler, window manager, network, drivers. Now can rely on host OS for device drivers
2
2
GIT: A Repository for Medley Definitions
Conventionally, GIT tracks and compares files
- Change detection and presentation based on line-editing semantics: Mismatching character sequence => significant difference
Medley's source files: external archives for structured definitions with metadata
- Saved and loaded, maybe printed, but never edited
- A given definition can be represented in different (but semantically equivalent) line and character sequences
Medley interface to GIT: Definition-based change tracking
P(ull)R(equest)C(ompare) command (demo)
- Retrieve changed files from GIT, find/parse PR vs master alternative definitions, compare as Lisp-structure differences
Idea: load and manage definitions @ commit level granularity
- If function FOO is included in commits C and D, definitions FOO;C and FOO;D are co-resident.
2
LispUsers, Library, Internal
(Favorite LispUsers)
Some other development tools: SPY, File Browser
2
Revive Applications using Interlisp
Notecards - early HyperText
Rooms - Screen / Desktop management
LOOPS - Lisp Object Oriented Programming System (not CLOS)
Truckin' - LOOPS game for teaching "Knowledge Representation"
LFG - Lexical Functional Grammar
.... and others
 .<01> .<01>.".../$T.... .$ OPTIMAGACHA GACHA OPTIMAOPTIMAOPTIMA

TIMESROMAN$OPTIMAOPTIMA     HRULE.GETFNOPTIMA
 & "   <00>  <00>#=.  S 
  {

= 
a
# HRULE.GETFNOPTIMA
 % "BV?Q/L* HRULE.GETFNOPTIMA
  <00>X<00>{ HRULE.GETFNOPTIMA
  <00><00><00>[ HRULE.GETFNOPTIMA
 HRULE.GETFN  ( .T4p;{=`  HRULE.GETFNOPTIMA
    0  HRULE.GETFNOPTIMA
  $   $ ; > !   V<00>z<EFBFBD>