or learn more

Kay’s 8

Mar 15, 2012

From Alan Kay on the fonc mailing list (circa March 2012):

… since meeting Seymour and starting to think about children and programming, there were eight systems that I thought were really nifty and cried out to be unified somehow:

  1. Joss 1
  2. Lisp 2
  3. Logo which was originally a unification of Joss and Lisp, but I thought more could be done in this direction).
  4. Planner 4 a big set of ideas (long before Prolog) by Carl Hewitt for logic programming and “pattern directed inference” both forward and backwards with backtracking)
  5. Meta II 5 a super simple meta parser and compiler done by Val Schorre at UCLA ca 1963
  6. IMP 6 perhaps the first real extensible language that worked well — by Ned Irons (CACM, Jan 1970)
  7. The Lisp-70 Pattern Matching System 7 by Larry Tesler, et al, with some design ideas by me
  8. The object and pattern directed extension stuff I’d been doing previously with the Flex Machine and afterwards at SAIL that also was influenced by Meta II 8

One of the schemes was to really make the pattern matching parts of this “work for everything” that eventually required “invocations and binding”. This was doable semantically but was a bear syntactically because of the different senses of what kinds of matching and binding were intended for different problems. This messed up the readability and desired “simple things should be simple”.

Examples I wanted to cover included simple translations of languages (English to Pig Latin, English to French, etc. some of these had been done in Logo), the Winograd robot block stacking and other examples done with Planner, the making of the language the child was using, message sending and receiving, extensions to Smalltalk-71, and so forth.

I think today the way to try to do this would be with a much more graphical UI than with text — one could imagine tiles that would specify what to match, and the details of the match could be submerged a bit.

More recently, both OMeta and several of Ian’s matchers can handle multiple kinds of matching with binding and do backtracking, etc., so one could imagine a more general language that could be based on this.

On the other hand, trying to stuff 8 kinds of language ideas into one new language in a graceful way could be a siren’s song of a goal.

Still ….



You could spend months surveying the contents of this post by Kay and build a dissertation (or four) on a deep dive.



  1. The JOSS Primer (pdf) 

  2. Stuff that I’ve written about Lisp 

  3. The key resources are Hewitt’s PLANNER: A Language for Proving Theorems in Robot and Sussman and Winograd’s Micro-planner Reference Manual

  4. A META II compiler 

  5. The original PDP-10 IMP source code

  6. The LISP-70 Pattern Matching System (pdf) 

  7. Kay’s original FLEX – A flexible extendable language is the best reference that I know. Also of interest is Kay’s original idea for “Simulation LOGO”. I don’t know very much about it, but if someone were to jump on fonc and ask, they might just get an answer. :-) 

4 Comments, Comment or Ping

  1. agumonkey

    The link to the JOSS Primer PDF is unnecessarily prefixed by your domain. Nice rabbit by the way

  2. dasmoth

    Link to the JOSS primer is currently broken.

  3. strangemonad

    I’ve been thinking of a way to curate the content of the fonc mailing list for a while but haven’t had any grand ideas. I’ve been following it since its inception but just from time to time since there tends to be a lot of noise

Reply to “Kay’s 8”