Zork ZIL was based on MDL, which was a Lisp derivative with "More Datatypes than Lisp", developed at the Dynamic Modeling Group (on the MIT-DM PDP-10 running ITS) by MIT's Project MAC (which the MIT AI Lab split off from).

https://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artif...

https://en.wikipedia.org/wiki/Incompatible_Timesharing_Syste...

HN discussion: Zork source code, 1977 (github.com/mitddc)

https://news.ycombinator.com/item?id=23108626

https://github.com/MITDDC/zork

About MDL:

https://en.wikipedia.org/wiki/MDL_(programming_language)

>MDL (programming language)

>Paradigms: Multi-paradigm: functional, procedural, reflective, meta

>Family: Lisp

>Designed by: Gerald Sussman, Carl Hewitt, Chris Reeve, Bruce Daniels

>Developer MIT Project MAC

>First appeared: 1971; 51 years ago

>Final release: 105 / 1980; 42 years ago

>Typing discipline: Dynamic, strong

>Scope: Static, lexical

>Implementation language: MDL

>Platform: PDP-10, VAX, Apollo/Domain

>OS: ITS, TENEX, TOPS-20, BSD, AEGIS

>License: Open-source

>Influenced by: Lisp

>Influenced: ZIL, Planner, Scheme, Common Lisp, Java, Prolog, Smalltalk; actor model, interactive fiction

>MDL (Model Development Language, or colloquially also referred to as More Datatypes than Lisp: or MIT Design Language) is a programming language, a descendant of the language Lisp. Its initial purpose was to provide high level language support for the Dynamic Modeling Group at Massachusetts Institute of Technology's (MIT) Project MAC. It was initially developed in 1971 on a PDP-10 computer on a time-sharing operating system named Incompatible Timesharing System (ITS). It later ran on TENEX, TOPS-20, BSD, and AEGIS.

>The initial development team consisted of Gerald Sussman and Carl Hewitt of the Artificial Intelligence Lab, and Chris Reeve, Bruce Daniels, and David Cressey of the Dynamic Modeling Group. Later, Stu Galley, also of the Dynamic Modeling Group, wrote the MDL documentation.

>MDL was initially called Muddle. This style of self-deprecating humor was not widely understood or appreciated outside of Project MAC and a few other early citadels of information technology. So the name was sanitized to MDL.

>MDL provides several enhancements to classic Lisp. It supports several built-in data types, including lists, strings and arrays, and user-defined data types. It offers multithreaded expression evaluation and coroutines. Variables can carry both a local value within a scope, and a global value, for passing data between scopes. Advanced built-in functions supported interactive debugging of MDL programs, incremental development, and reconstruction of source programs from object programs.

>Although MDL is obsolete, some of its features have been incorporated in later versions of Lisp. Gerald Sussman went on to develop the Scheme language, in collaboration with Guy Steele, who later wrote the specifications for Common Lisp and Java. Carl Hewitt had already published the idea for the language Planner before the MDL project began, but his subsequent thinking on Planner reflected lessons learned from building MDL. Planner concepts influenced languages such as Prolog and Smalltalk. Smalltalk and Simula, in turn, influenced Hewitt's future work on the actor model.

>But the largest influence that MDL had was on the software genre of interactive fiction (IF). An IF game named Zork, sometimes called Dungeon, was first written in MDL. Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to start Infocom, a company that produced many early commercial works of interactive fiction.

>In 1980 Marc Blank and Joel Berez adapted the MDL language to create a subset called ZIL (Zork Implementation Language) which was used extensively by Infocom to create their award winning games.

<DEFINE EXIT-TO (EXITS RMS)
#DECL ((EXITS) EXIT (RMS) <UVECTOR [REST ROOM]>)
<MAPF <>
<FUNCTION (E)
#DECL ((E) <OR DIRECTION ROOM CEXIT NEXIT DOOR>)
<COND (<TYPE? .E DIRECTION>)
(<AND <TYPE? .E ROOM> <MEMQ .E .RMS>>
<MAPLEAVE T>)
(<AND <TYPE? .E CEXIT> <MEMQ <2 .E> .RMS>>
<MAPLEAVE T>)
(<AND <TYPE? .E DOOR>
<OR <MEMQ <DROOM1 .E> .RMS>
<MEMQ <DROOM2 .E> .RMS>>>
<MAPLEAVE T>)>>
.EXITS>>

The MDL Programming Language Primer, Michael Dornbrook, Marc Blank:

http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-29...

The MDL Programming Language, S. W. Galley and Greg Pfister:

http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_...

The MDL Programming Environment, P. David Lebling:

http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_...