shaunlebron / history-of-lisp-parens

a history of Lisp's most notorious artifact, parentheses
570 stars 29 forks source link

LISPED (first structure editor in 1966) #14

Open shaunlebron opened 6 years ago

shaunlebron commented 6 years ago

Mark H. David recently emailed me with a link to Lowell Hawkinson's LISPED editor, to clarify that it was the first structure editor for Lisp, before the BBN Teletype Editor came out:

From Lowell in 2010, in an email exchanged with Paul McJones:

Early in the Lisp 2 effort, I implemented an online Lisp code editor called Lisped on the Q32. Lisped, used at SDC for perhaps 8-10 years, edited Lisp code based on its structure, not on its text file representation. I heard from someone some years ago that Lisped was credited by Herbert Stoyan as being the first "structural" editor for any computer language.

In terms of the experience for running it, you enter through a parent program called LISPEDIT, which allows you to read, execute, and perform various other high-level file operations.

The STRINGEDIT program is the actual structure editor that is entered when editing a file or creating a new one.

Token Strings

Interestingly, the program converts a file's s-expressions to token strings for operating on. You can see some example conversions below:

screen shot 2018-01-08 at 3 41 01 pm

Editor Focus

The current focus of the editor (like a cursor or selection) is called the object fragment. All commands operate on the object fragment, and allow you to change your selection by manipulating the the LB and RB pointers (left and right boundaries). In the diagram below, the t represents any token.

screen shot 2018-01-08 at 3 50 55 pm

The diagram also defines directionality in terms of moving toward either the head or the tail of a string (file):

screen shot 2018-01-08 at 3 51 42 pm

Structured Navigation

There are some interesting commands for changing the focus (object fragment) in a structured way:

Structured Modification

I can't seem to find any commands that insert or remove parens in pairs, or to move parens across expressions.

drudru commented 1 year ago

Also, Peter L. Deutsch (famous programmer in early Lisp days and Ghostscript creator), https://interlisp.org/medley/history/timeline/ if you search for 'structure editor', it briefly describes his system. It is not as notable as above, but it was 1968. You may be able to email him for more info.

simon-brooke commented 1 year ago

Thank you for this! This is new to me and very happy interesting. I'll maybe implement an editor based on this for Beowulf!

Cheers

Simon

On Mon, 8 Jan 2018, 22:00 Shaun Lebron, @.***> wrote:

Mark H. David recently emailed me with a link to Lowell Hawkinson's LISPED editor http://www.softwarepreservation.org/projects/LISP/lisp2/TM-2710-100-01-LISPED.pdf, to clarify that it was the first structure editor for Lisp, before the BBN Teletype Editor came out:

  • 1966 - LISP Editor Program LISPED
  • 1967 - BBN Teletype Editor

In terms of the experience for running it, you enter through a parent program called LISPEDIT, which allows you to read, execute, and perform various other high-level file operations.

The STRINGEDIT program is the actual structure editor that is entered when editing a file or creating a new one. Token Strings

Interestingly, the program converts a file's s-expressions to token strings for operating on. You can see some example conversions below:

[image: screen shot 2018-01-08 at 3 41 01 pm] https://user-images.githubusercontent.com/116838/34693813-a5be50ce-f48a-11e7-8f65-500c4763b887.png Editor Focus

The current focus of the editor (like a cursor or selection) is called the object fragment. All commands operate on the object fragment, and allow you to change your selection by manipulating the the LB and RB pointers (left and right boundaries). In the diagram below, the t represents any token.

[image: screen shot 2018-01-08 at 3 50 55 pm] https://user-images.githubusercontent.com/116838/34694185-c31b4bf8-f48b-11e7-8e99-6b1dd388531f.png

The diagram also defines directionality in terms of moving toward either the head or the tail of a string (file):

[image: screen shot 2018-01-08 at 3 51 42 pm] https://user-images.githubusercontent.com/116838/34694431-b2e94996-f48c-11e7-84e1-71547516d2a1.png Structured Navigation

There are some interesting commands for changing the focus (object fragment) in a structured way:

  • NEXT - LB swaps with RB, and RB is moved to tail
  • ONEXPR - shrinks or extends RB to encompass the smallest possible expression
  • ADVANCE - move LB forward or back
  • EXTEND - move RB forward or back

Structured Modification

I can't seem to find any commands that insert or remove parens in pairs, or to move parens across expressions.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/shaunlebron/history-of-lisp-parens/issues/14, or mute the thread https://github.com/notifications/unsubscribe-auth/AFPvW1pAMVUudmSsRVxvUazcE9XV72b5ks5tIpADgaJpZM4RXA-R .