Muc*_*hin 6 haskell virtual-machine z-machine
许多80年代的计算机爱好者都听说过Infocom系列互动小说游戏,特别是"Zork","银河系漫游指南","Planetfall","A Mind Forever Voyaging" 等等.
这些游戏是在"Z-Machine"虚拟机之上实现的.该机器实现为RAM块,堆栈和虚拟处理器.该过程执行可以动态读取和写入RAM的指令.
我的问题是:VMs RAM是动态的.什么是一种有效且合理的惯用方式来表示这个RAM(以及更全面的虚拟机结构),以便我可以实现运行这些游戏的软件?例如,我应该使用Data.Array来表示RAM和状态monad吗?
Haskell具有各种类型的阵列,具有不同程度的副作用控制以及盒装和非盒装变体.盒装数组是指向值的指针数组,未装箱数组是连续内存块的数组.对于RAM,您只想将其视为一个连续内存块,因此您可能希望选择一个未装箱的数组类型,如STUARray或IOUArray或StorableArray或类似的.