Zork + "MDL" (More Datatypes than Lisp)

The interactive fiction games "Zork" (I, II, and III) have been open sourced:

https://boingboing.net/2025/11/21/microsoft-makes-zork-source-code-freely-available.html

They're implemented in a Lisp-like thing called "ZIL" (Zork Implementation Language)

https://github.com/historicalsource/zork1/blob/master/1dungeon.zil

<OBJECT SKULL
	(IN LAND-OF-LIVING-DEAD)
	(SYNONYM SKULL HEAD TREASURE)
	(ADJECTIVE CRYSTAL)
	(DESC "crystal skull")
	(FDESC
"Lying in one corner of the room is a beautifully carved crystal skull.
It appears to be grinning at you rather nastily.")
	(FLAGS TAKEBIT)
	(VALUE 10)
	(TVALUE 10)>

ZIL is based on MDL (or "muddle"), standing for "More Datatypes than Lisp", which is a very Rebol-y sounding idea.

Here's a reference:

https://mdl-language.readthedocs.io/en/latest/00-front-matter/

It's kind of curious... Lisp just has parentheses and quoted parentheses. But MDL used <angle brackets> for executable expressions as separate from (parentheses for plain lists). Rebol draws the same kind of discernment, but chose [BLOCK!] for lists and (GROUP!) for evaluation.

I prefer Rebol's choice, because "block" feels boxier and more like it "blocks" evaluations. But the funny thing is that they apparently chose the angle brackets because they were "sharp" suggested evaluation (pointy = dangerous?)

Anyway, MDL seems neat. Might be fun to look at this Zork code and reimagine it as Ren-C to compare and contrast.

1 Like