| screenshot = <!-- Filename only -->
| screenshot caption =
| paradigms = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflection (computerReflective programming)|reflective]], [[Metaprogramming|meta]]
| family = [[Lisp (programming language)|Lisp]]
| designers = [[Gerald Sussman]], [[Carl Hewitt]], Chris Reeve, [[Bruce Daniels]]
| influenced = [[Z-machine|ZIL]], [[Planner (programming language)|Planner]], [[Scheme (programming language)|Scheme]], [[Common Lisp]], [[Java (programming language)|Java]], [[Prolog]], [[Smalltalk]]; [[actor model]], [[interactive fiction]]
}}
'''MDL''' ('''Model Development Language''',<ref name="Supnik2006">{{cite interview |lastlast1=Supnik |firstfirst1=Bob |subject-link=Bob Supnik |interviewer=Jason Scott |title=GET LAMP Bob Supnik Interview |date=October 25, 2006 |url=https://archive.org/details/GETLAMP-Supnik |at=15:00}}</ref> or colloquially also referred to as '''More Datatypes than Lisp'''<ref name="Licklider1988" >
{{cite webreport |last1=Licklider |first1=J. C. R. |author1-link=J. C. R. Licklider |date=January 1988 |url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a197342.pdf |title=Graphical Programming and Monitoring RADC-TR-88-7 |publisher=Rome Air Development Center |url-status=live |archive-url=https://web.archive.org/web/20190503021117/https://apps.dtic.mil/dtic/tr/fulltext/u2/a197342.pdf |url-status=live |archive-date=May 3, 2019 |title=Graphical Programming and Monitoring RADC-TR-88-7 |last=Licklider |first=J.C.R |date=January 1988 |publisher=Rome Air Development Center |access-date=2019-05-18}}</ref>{{rp|3}} or '''MIT Design Language'''{{citation needed|date=May 2019}}) is a [[programming language]], a descendant of the language [[Lisp (programming language)|Lisp]]. Its initial purpose was to provide [[high -level programming language]] support for the Dynamic Modeling Group at [[Massachusetts Institute of Technology]]'s (MIT) [[Project MAC]].<ref name="DornbrookBlank" >
{{cite webbook |last1=Dornbrook |first1=Michael |last2=Blank |first2=Marc |date=1980 |url=http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-292.pdf |title=MDL Programming Primer MIT-LCS-TR-292 |last=Dornbrook |first=Michael | last2=Blank | first2=Marc |date=1980 |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2019-05-18}}</ref> It was developed in 1971 on a [[PDP-10]] running [[Incompatible Timesharing System|ITS]] and later ran on [[TENEX (operating system)|TENEX]], [[TOPS-20]],<ref name="GalleyPfister1979" >
{{cite webbook |last1=Galley |first1=Stu W. |last2=Pfister |first2=Greg |date=1979 |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Language.pdf |title=The MDL Programming Language |last=Galley |first=Stu W. |last2=Pfister |first2=Greg |date=1979 |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}} ([https://mdl-language.readthedocs.io/en/latest/ Markdown/HTML transcription])</ref><ref>
{{cite webbook |last1=Lebling |first1=P. David |date=May 1980 |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Environment.pdf |title=The MDL Programming Environment |last=Lebling |first=P. David |date=May 1980 |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}}</ref> [[Berkeley Software Distribution|BSD]],<ref name="Licklider1988" />{{rp|6}} and [[Domain/OS#AEGIS|AEGIS]].<ref name="Lim1982">
{{cite webreport |last1=Lim |first1=Poh Chuan |date=1982 |url=https://dspace.mit.edu/bitstream/handle/1721.1/102210/10219781-MIT.pdf#page=69 | page=69 |title=A Device-Independent Graphics Manager for MDL |lastpage=Lim |first=Poh Chuan |date=198269 |publisher=Massachusetts Institute of Technology |access-date=2019-05-18}}</ref>
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.{{citation needed|date=August 2013}}
MDL was initially called ''Muddle''.<ref name="GalleyPfister1979" />{{rp|2}} This style of self-deprecating humor was not widely understood or appreciated outside of Project MAC. So the name was sanitized to MDL.{{citation needed|date=May 2013}}
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 [[Thread (computing)|multithreaded]] expression evaluation and [[coroutine]]s. [[Variable (computer science)|Variable]]s 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 [[Software development|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 (programming language)|Scheme]] language, in collaboration with [[Guy Steele]], who later wrote the specifications for [[Common Lisp]] and [[Java (programming language)|Java]]. Carl Hewitt had already published the idea for the language ''[[Planner (programming 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.<ref name="dyer19840506">{{Cite news |last1=Dyer |first1=Richard |date=1984-05-06 |url=http://www.csd.uwo.ca/Infocom/Articles/globe84.html |title=Masters of the Game |last=Dyer |first=Richard |date=1984-05-06 |newspaper=The Boston Globe |url-status=dead |archive-url=https://web.archive.org/web/19970607204921/http://www.csd.uwo.ca/Infocom/Articles/globe84.html |archive-date=1997-06-07 |url-status=dead }}</ref> Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to start [[Infocom]], a company that produced many early [[Commercial software|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.
==Code sample==
This is a sample of PDP-10 MDL:<ref>{{cite web |url=http://simh.trailing-edge.com/games/zork-mdl.zip |title=Zork-mdl.zip }}</ref><ref>{{cite web |url=http://simh.trailing-edge.com/software.html |title=Software Kits |lastlast1=Supnik |firstfirst1=Bob |date=2018-06-04 |website=Computer Simulation and History (SimH) |publisher=Bitsavers.org |access-date=2018-12-18}}</ref><ref>{{cite web |url=http://pdp-11.ru/simh_trailing-edge_com/software.html |title=Software Kits |lastlast1=Supnik |firstfirst1=Bob |date=2007-09-02 |website=Computer Simulation and History (SimH) |publisher=Forum PDP-11 |access-date=2018-12-18}}</ref>
<syntaxhighlight lang="smalltalkclojure">
<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>>
</syntaxhighlight>
==See also==
* [[ZIL (Zork Implementation Language)]]
* [[Zork]]
* [[Scheme (programming language)]]
[[Category:Functional languages]]
[[Category:Lisp programming language family]]
<!-- Hidden categories below -->
[[Category:Articles with example Lisp (programming language) code]]
|