用 Nix 语言玩 Super Mario Bros. 3
Super Mario Derivations

我利用 Nix 语言的惰性求值特性,将 Super Mario Bros. 3 的游戏操作序列转化为属性路径。在这个实验中,每一次按键都对应一个独立的 derivation,而 Nix store 则成为了游戏存档的历史记录。通过构建递归属性集,我实现了无限深度的游戏状态树,且无需重复模拟祖先帧。这不仅展示了 Nix 在描述软件之外的潜力,更证明了其作为可重现状态机持久层的能力。从简单的按键序列到复杂的视频录制,Nix 将传统的包管理器变成了可交互的游戏模拟器。
我们习惯将属性路径视为名称,仅仅是目录中事物的坐标,但惰性求值意味着它实际上是一个程序:评估器按步骤执行,按需生成所需内容。