timescale.info
Sign inSign up

Dynamically typed functional programming · Lisp, Scheme, Clojure and teaching traditions

A history of untyped foundations and dynamically typed functional programming, centered on Lisp, Scheme, Common Lisp, Racket and Clojure, with a separate teaching track and neighboring Erlang/Elixir and hosted Lisp designs. Gregorian calendar, UTC. Sources checked 3 November 2026.

What “untyped” means here

Untyped lambda calculus does not assign static types to its terms. Lisp-family languages still have distinct runtime values and rules about their use. Dynamically typed is consequently the more precise description for most of these programming languages. They can support functional programming without forbidding mutation, I/O, objects or other effects. Dynamic typing does not require interpretation: Lisp implementations have a long compilation history.

The companion Type theory timeline covers typed foundations more broadly; Haskell history follows a different functional-language branch; Tacit programming explores composition and variable elimination. This timeline keeps those connections without placing every functional language in one implementation family.

Compare the histories

Use Separate by tags for origins, Lisp, MACLISP, Interlisp, Common Lisp, Scheme, Racket, Clojure, ClojureScript, Emacs Lisp, Guile, compilers, standards, closures, continuations, libraries, host platforms and adjacent traditions. Teaching entries are gold; standard/report entries are blue; the Scheme/Racket strand and Clojure strand have distinct colors.

Early Lisp’s symbolic expressions, lists, recursive functions, evaluator and compiler grow into multiple dialects and environments. Common Lisp consolidates selected traditions into a community specification and later an ANSI standard. Scheme develops a compact semantic core and an evolving report series. PLT Scheme grows through an education project and is renamed Racket as its language-building platform expands. Clojure is a newly designed hosted Lisp dialect, not a direct implementation fork of an earlier Lisp. Erlang and Elixir are included as related dynamically typed functional traditions, not mislabeled Scheme or Clojure descendants.

The concept notes explain lexical scope versus static typing, dynamic binding versus dynamic typing, closures, proper tail recursion, continuations, macro hygiene, persistent data, compilation, host integration, concurrency and the limits of treating specs/type hints as mandatory static checking. Racket’s typed and untyped language variants remain distinct. Common Lisp’s optional declarations do not turn the whole family into one statically typed language.

Public teaching material is part of the history

Separate by teaching resources for books, manuals, lectures and public materials, or by coursework for course offerings, workshop records and resource snapshots. Individual tags include SICP, textbooks, lectures, recursion, interpreters, program design and online education.

Resource or teaching traditionWhat is publicly linkedHistorical distinction
SICPMIT-hosted text, lecture recordings, course archive and official video uploadCourse development, textbook editions, 1986 recording and 2009 YouTube upload have separate dates
The Little LISPer / Little Schemer / Seasoned SchemerBibliographic and publisher recordsThese are book milestones; a free full-text copy is not promised
Simply SchemeAuthor-hosted text and teaching contextA gentler Scheme introduction, distinct from the full SICP course
How to Design ProgramsAuthor-maintained complete text and archived editionsDesign recipes and deliberately staged teaching languages
Essentials of Programming LanguagesAuthor-maintained preface, interpreter code, errata and teaching linksThe host language and the languages modeled by the exercises can differ
PLAIAuthor-hosted editions, revisions and associated course materialEdition dates, revision dates and university term dates are distinguished
Berkeley CS 61AOlder Scheme-based course archive and current public Scheme practice resourcesThe main-language transition to Python in 2011 does not erase the older teaching history
Helsinki Clojure MOOCPublic lessons and programming exercisesThe 2014 course identifies earlier university offerings in 2011–2013
ClojureBridgePublic workshop curriculum and project historyThe first workshop is dated separately from the current availability snapshot
UW Programming Languages materialAuthor-hosted notes and exercises for a university/MOOC curriculumThe mixed ML/Racket/Ruby approach is not represented as wholly untyped

MIT’s first-edition SICP preface dates development from 1978 and teaching in its then-present form from fall 1980. The lecture page summarizes the subject as dating from 1981; that discrepancy is retained. The professionally produced HP lectures were recorded in July 1986 and follow the first edition, while the second edition revises many programs and adds material. MIT OCW’s Spring 2005 course label and the official 2009 YouTube upload do not imply that the lectures were recorded in those years.

University course dates identify offerings, not proven first days of web publication. Some old university project URLs now require institutional login; the timeline links openly readable materials and clearly labeled public resource snapshots instead of presenting a login page as a public assignment. Archived text and exercises are separate from active enrollment, grading or account-based services.

Standards, releases and dates

Common Lisp’s 1984 book, 1990 second edition, ANSI standard and HyperSpec are different artifacts. R6RS and R7RS-small are distinct modern Scheme targets; a larger report number does not imply source compatibility with every earlier implementation. The currently hosted R7RS PDF has a 2021 revision date, while the standards site dates the report’s standardization milestone to 2013. The timeline preserves that distinction. SRFI 0’s receipt in November 1998, draft work and final status in May 1999 are also distinct.

Clojure’s creator reproduces an initial availability announcement dated 17 October 2007. The contemporaneous 4 May 2009 Clojure 1.0 announcement is preferred to a later downloads table that labels the release July 2009. The HOPL paper is published in June 2020 and presented at the rescheduled June 2021 conference. At the research cutoff, the official release page distinguishes stable 1.12.6 from the 1.13 development alpha line.

Year-only and month-only evidence uses January 1 or the first day solely as a plotting anchor. Midnight UTC does not assert a historical time of day. Coarse dates have presumptive outlines. Every event identifies its kind: design period, paper, language report, implementation release, textbook, recorded lecture, course offering, upload, workshop or present-day snapshot. Coverage bands are editorial reading guides rather than language lifetimes or support/enrollment windows. This is an extensive selection, not an inventory of every Lisp dialect, runtime release or university class.

Sources and relationships

Sources prioritize original papers and reports, creator histories, standards, release announcements, author-maintained books, university course archives and institutional preservation records. Original publisher/library bibliographic metadata supplies selected book dates. Preserved copies retain the original authorship and publication identity. Author-hosted originals may have later web transcription dates, which are not silently substituted for original publication dates.

Relationship explanations and evidence distinguish documented development or use from conceptual/pedagogic comparisons. An arc between courses is not a claim that one author copied another curriculum. A family comparison does not establish a source-code fork. Concept cards are undated explanations attached to real milestones, not fictitious historical events.

Media credits

The museum photograph of the CADR Lisp machine illustrates the historical computing environment. It does not identify the machine used for every language or course. Later portraits identify McCarthy, Sussman, Steele and Hickey; their capture dates are distinct from the dated events. The five Commons files use individually checked public-domain/Creative Commons terms. Course video availability and book records are kept separate from these image rights. Images are unchanged apart from thumbnail scaling.

Duration correction: Ongoing subjects previously drawn through a present/research cutoff are represented at their original starts, with no end asserted. Existing moments at those coordinates are reused; their attached cards retain the former duration’s notes, sources, tags and media. Bounded historical and coverage intervals remain durations.

88 moments · 1936-01-01T00:00:00Z CE – 2026-11-03T00:00:00Z CE · by @athan · @athan

Moments

  1. Lambda calculus supplies an untyped functional foundation
  2. Lisp’s prehistory begins amid symbolic AI research
  3. Lisp develops as a symbolic expression-processing language
  4. Early documents describe compiling Lisp functions
  5. The LISP I manual documents the implemented system
  6. Recursive Functions of Symbolic Expressions presents Lisp
  7. The LISP 1.5 Programmer’s Manual consolidates the language
  8. Landin’s abstract-machine work develops closures and evaluation
  9. BBN Lisp develops an interactive programming environment
  10. ISWIM explores expression-oriented functional language design
  11. MACLISP develops at MIT’s Project MAC
  12. A LISP 1.5 primer introduces programming through symbolic examples
  13. The Interlisp manual documents an integrated Lisp environment
  14. The Little LISPer teaches recursive thinking through dialogue
  15. Scheme: An Interpreter for Extended Lambda Calculus is published
  16. The Interlisp virtual-machine specification supports portability work
  17. Lambda: The Ultimate Imperative explores control in functional terms
  18. The Revised Report develops Scheme’s language definition
  19. MIT teaches the SICP material in its developed course form
  20. A community initiative begins defining Common Lisp
  21. The Swiss Cheese draft records an early Common Lisp specification
  22. Common Lisp the Language publishes a community specification
  23. The Revised Revised Report continues Scheme’s consolidation
  24. SICP’s first edition teaches abstraction and interpreters in Scheme
  25. GNU Emacs makes Lisp extension programming publicly available
  26. Erlang emerges from experiments in concurrent symbolic programming
  27. R3RS gives Scheme a more systematic report
  28. Abelson and Sussman record the SICP lecture series for HP
  29. Common Lisp the Language, Second Edition reflects a growing language
  30. R4RS records Scheme’s language and macro conventions
  31. Essentials of Programming Languages teaches interpreters as explanations
  32. The Evolution of Lisp records decades of dialect development
  33. ANSI standardizes Common Lisp
  34. Simply Scheme provides a gentler route into functional programming
  35. PLT begins a novice-programming education project
  36. Guile’s early release series establishes a Scheme extension platform
  37. The Little Schemer continues dialogue-based recursion teaching
  38. The Seasoned Schemer extends the teaching sequence
  39. The Common Lisp HyperSpec provides a hypertext reference
  40. SICP’s second edition revises the programs and teaching material
  41. MIT 6.001’s fall archive preserves a complete Scheme-based course
  42. R5RS presents a compact Scheme specification
  43. The SRFI registry receives an early portability proposal
  44. Erlang is released as open source
  45. SBCL forks from CMUCL
  46. EOPL’s second edition develops the interpreter-centered curriculum
  47. How to Design Programs publishes a design-recipe curriculum
  48. Hickey begins designing Clojure
  49. Practical Common Lisp teaches application-oriented Lisp programming
  50. MIT’s Spring 2005 6.001 archive exposes structured course material