Origins
graph TB %% ============================================ %% FOUNDATIONAL LAYER (1930s-1960s) %% ============================================ LambdaCalculus[Lambda Calculus<br/>Alonzo Church<br/>1930s] %% ============================================ %% LISP DYNASTY (1958-1984) %% ============================================ Lisp[Lisp<br/>John McCarthy<br/>1958] Lisp15[Lisp 1.5<br/>1962] Maclisp[Maclisp<br/>MIT Project MAC<br/>~1966] %% ============================================ %% CONCURRENT/LOGIC PROGRAMMING (1970s-1980s) %% ============================================ Prolog[Prolog<br/>Alain Colmerauer<br/>1972] Smalltalk[Smalltalk<br/>Alan Kay et al.<br/>1972] Scheme[Scheme<br/>Sussman & Steele<br/>1975] CSP[CSP<br/>Tony Hoare<br/>1978] PLEX[PLEX<br/>Ericsson<br/>~1974] %% ============================================ %% 1980s SYNTHESIS LANGUAGES %% ============================================ ZetaLisp[ZetaLisp<br/>Symbolics<br/>~1980] CommonLisp[Common Lisp<br/>1984] Parlog[Parlog<br/>1986] %% ============================================ %% ERLANG EMERGENCE (1986-1998) %% ============================================ Erlang[Erlang<br/>Armstrong, Virding, Williams<br/>1986-1998] %% ============================================ %% FUNCTIONAL PROGRAMMING EVOLUTION (1990s) %% ============================================ Haskell[Haskell<br/>1990] BEAM[BEAM VM<br/>1993] Java[Java/JVM<br/>1995] %% ============================================ %% 2000s DATA STRUCTURES & THEORY %% ============================================ Bagwell[Hash Array Mapped Tries<br/>Phil Bagwell<br/>2001] CoreErlang[Core Erlang<br/>2001] %% ============================================ %% 2000s MODERN SYNTHESIS (2007-2008) %% ============================================ Clojure[Clojure<br/>Rich Hickey<br/>2007] LFE[LFE<br/>Robert Virding<br/>2007-2008] %% ============================================ %% GO LINEAGE (for context) %% ============================================ Algol60[Algol 60<br/>1960] Pascal[Pascal<br/>1970] C[C<br/>1972] Modula2[Modula-2<br/>1978] Oberon[Oberon<br/>1987] Squeak[Squeak<br/>1985] Newsqueak[Newsqueak<br/>1989] Oberon2[Oberon-2<br/>1991] Alef[Alef<br/>1993] Go[Go<br/>2009] %% ============================================ %% ZYLISP - THE GRAND SYNTHESIS (2025) %% ============================================ Zylisp[Zylisp<br/>2025] %% ============================================ %% FOUNDATIONAL CONNECTIONS %% ============================================ LambdaCalculus --> Lisp LambdaCalculus --> Scheme %% ============================================ %% LISP DYNASTY EVOLUTION %% ============================================ Lisp --> Lisp15 Lisp15 --> Maclisp Maclisp --> ZetaLisp Lisp --> CommonLisp Lisp --> Scheme %% ============================================ %% SMALLTALK'S WIDESPREAD INFLUENCE %% ============================================ Smalltalk -.OOP, message passing.-> ZetaLisp Smalltalk -.message passing.-> Erlang %% ============================================ %% ERLANG LINEAGE %% ============================================ Prolog --> Erlang PLEX --> Erlang CSP -.theory, ! operator.-> Erlang Parlog -.concurrent logic.-> Erlang Erlang --> BEAM BEAM --> CoreErlang %% ============================================ %% LFE SYNTHESIS %% ============================================ Maclisp --> LFE CommonLisp -.Lisp-2, macros.-> LFE Scheme -.lexical scope.-> LFE Erlang --> LFE CoreErlang --> LFE %% ============================================ %% CLOJURE SYNTHESIS %% ============================================ CommonLisp --> Clojure Scheme --> Clojure Haskell -.STM, immutability, lazy seqs.-> Clojure Bagwell -.persistent structures.-> Clojure Java --> Clojure Erlang -.agents.-> Clojure %% ============================================ %% GO LINEAGE %% ============================================ Algol60 --> Pascal Pascal --> Modula2 Modula2 --> Oberon Oberon --> Oberon2 C --> Go CSP --> Squeak Squeak --> Newsqueak Newsqueak --> Alef Alef --> Go Modula2 -.packages.-> Go Oberon2 -.syntax.-> Go Scheme -.lexical scope.-> Go %% ============================================ %% THE GRAND CONVERGENCE TO ZYLISP %% ============================================ Go --> Zylisp Clojure --> Zylisp Erlang --> Zylisp LFE --> Zylisp ZetaLisp --> Zylisp %% ============================================ %% KEY TRANSITIVE INFLUENCES TO ZYLISP %% ============================================ Lisp -.S-expressions, homoiconicity.-> Zylisp BEAM -.concurrency runtime.-> Zylisp Haskell -.functional paradigms.-> Zylisp CommonLisp -.macro system.-> Zylisp %% ============================================ %% STYLING BY ERA AND PARADIGM %% ============================================ classDef foundationStyle fill:#E8EAF6,stroke:#5C6BC0,color:#000,stroke-width:3px classDef lisp50sStyle fill:#C8E6C9,stroke:#388E3C,color:#000 classDef lisp60sStyle fill:#A5D6A7,stroke:#388E3C,color:#000 classDef concurrent70sStyle fill:#FFE082,stroke:#F9A825,color:#000 classDef lisp80sStyle fill:#81C784,stroke:#2E7D32,color:#000 classDef erlangStyle fill:#EF5350,stroke:#C62828,color:#fff,stroke-width:3px classDef fp90sStyle fill:#FFB74D,stroke:#F57C00,color:#000 classDef vmStyle fill:#90CAF9,stroke:#1976D2,color:#000 classDef modern2000sStyle fill:#BA68C8,stroke:#7B1FA2,color:#fff,stroke-width:3px classDef goLineageStyle fill:#00ADD8,stroke:#00728C,color:#fff classDef zylispStyle fill:#7C4DFF,stroke:#512DA8,color:#fff,stroke-width:4px class LambdaCalculus foundationStyle class Lisp lisp50sStyle class Lisp15,Maclisp,Algol60 lisp60sStyle class Prolog,Smalltalk,Scheme,CSP,PLEX,Pascal,C concurrent70sStyle class ZetaLisp,CommonLisp,Parlog,Modula2 lisp80sStyle class Erlang erlangStyle class Haskell,BEAM,Java,Squeak,Newsqueak,Oberon,Alef fp90sStyle class Bagwell,CoreErlang,Oberon2 vmStyle class Clojure,LFE,Go modern2000sStyle class Zylisp zylispStyle
Five programming languages ultimately led to the creation of Zylisp:
- ZetaLisp
- Erlang
- Clojure
- LFE
- Go
Or, in order of most influence:
- LFE
- Go
- Erlang
- ZetaLisp
- Clojure
The ordering of the above is very particular: in implemeting LFE, Robert Virding essentially created a near-textbook for future language designers, especially those who wish to implement dialects of another language on that base language's VM. Zylisp has to make many of the same desicions that LFE did, and where foundational language restrictions didn't apply, Zylisp makes nearly all the same choices that Robert did. This is not blind trust nor over enthusiastic devotion: it's merely following excellent advice and good decisn decisions.
While Zylisp is built on top of Go and completely depends upon the almost unbelievably good AST the Go team created -- even with all of that, LFE has made a bigger impact on Zylisp. The impact of Erlang's OTP on Zylisp's design is also quite significant, and might have exceeded the influence of Go itself, if Go's AST had been any less remarkable.
ZetaLisp had an impact on both LFE and Zylisp, and the ZetaLisp documentation remained a touchstone throughout the development of Zylisp. Clojure's impact has come from not only its incredible selection of beautifully hand-crafted language macros, but via its extraordinary standard library: Clojure may have one of the most internally consistent language libraries ever created.
These core influences represent unique, if not entirely distinct evolutionary branches in programming language history, each drawing from overlapping but different ancestral lines. Go (2009) emerged from Google and Bell Labs heritage, consolidating systems programming efficiency with CSP-based concurrency to address software engineering at massive scale. ZetaLisp (~1980) descended from MIT's AI Lab as the pinnacle of the original Lisp tradition, optimized for dedicated hardware and enriched with Smalltalk-inspired object orientation. Erlang (1986-1998) was forged at Ericsson to solve telecommunications challenges through revolutionary concurrency primitives and fault-tolerance mechanisms born from PLEX and Prolog. Clojure (2007) brought Lisp philosophy into the modern era with immutability-first design, persistent data structures, and pragmatic JVM integration. LFE (2007-2008) represents a unique convergence, uniting Lisp's metaprogramming power with Erlang's battle-tested concurrency model through Robert Virding's dual expertise as both Erlang co-creator and Lisp implementer.
Together, these five languages trace back through seven decades of programming language innovation, from McCarthy's original Lisp (1958), through Thompson and Ritchie's Unix and C (1969-1972), Hoare's CSP theory (1978), Wirth's structured programming lineage (1960-1991), and contemporary functional programming paradigms. They draw from at least 30 distinct programming languages across multiple traditions—systems programming (C, Plan 9), concurrent programming (CSP, Newsqueak, Alef, Limbo), symbolic computation (Lisp, Maclisp, Scheme), logic programming (Prolog), object orientation (Smalltalk), functional programming (Haskell, ML), and modern platform integration (JVM, BEAM). This creates a rich tapestry of influences spanning telecommunications fault-tolerance, distributed systems concurrency, metaprogramming flexibility, immutable data structures, type safety, and software engineering pragmatism—all flowing into Zylisp's 2025 release as a grand synthesis of programming language design wisdom accumulated across computing's entire history.