gpt4 book ai didi

haskell - 在 Haskell 中处理可写内存 - Infocom 的 Z-Machine VM 的实现

转载 作者:行者123 更新时间:2023-12-02 11:00:43 24 4
gpt4 key购买 nike

很多80年代的电脑爱好者都听说过Infocom系列的互动小说游戏,其中最著名的有《Zork》、《银河系漫游指南》、《行星陨落》、《心灵永远的航行》等, etc .

这些游戏是在 "Z-Machine" 之上实现的虚拟机。该机器被实现为一 block RAM、一个堆栈和一个虚拟处理器。该进程执行的指令可以动态地读写RAM。

我的问题是:虚拟机 RAM 是动态的。什么是有效且合理惯用的方式来表示此 RAM(以及更全面的虚拟机结构),以便我可以实现软件来运行这些游戏?例如,我应该使用 Data.Array 来表示 RAM 和状态 monad 吗?

最佳答案

Haskell 拥有各种类型的数组,具有不同级别的副作用控制,并且有盒装和未盒装变体。装箱数组是指向值的指针数组,未装箱数组是连续内存块的数组。对于 RAM,您只想将其视为一 block 连续内存,因此您可能想要使用未装箱的数组类型,例如 STUARray 或 IOUArray 或 StorableArray 或类似的数组类型。

关于haskell - 在 Haskell 中处理可写内存 - Infocom 的 Z-Machine VM 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4710829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com