6

80年代にコンピューター愛好家だった多くの人々は、インタラクティブフィクションゲームのInfocomシリーズ、特に「Zork」、「The Hitchhiker's Guide to the Galaxy」、「Planetfall」、「AMindForeverVoyaging」などを聞いたことがある

これらのゲームは、「Z-Machine」仮想マシンの上に実装されました。マシンは、RAMのブロック、スタック、および仮想プロセッサとして実装されます。このプロセスは、RAMの読み取りと書き込みを動的に実行できる命令を実行します。

私の質問はこれです:VMのRAMは動的です。これらのゲームを実行するためのソフトウェアを実装できるように、このRAM(およびより全体的に仮想マシンの構造)を表す効率的で合理的に慣用的な方法は何ですか?たとえば、RAMと状態モナドを表すためにData.Arrayを使用する必要がありますか?

4

2 に答える 2

5

Haskellには、さまざまなレベルの副作用制御を備えたさまざまなタイプのアレイがあり、ボックス化されたものとボックス化されていないものの両方があります。ボックス化された配列は値へのポインタの配列であり、ボックス化されていない配列は連続したメモリブロックの配列です。RAMの場合、これを連続したメモリのブロックとして扱いたいので、STUARray、IOUArray、StorableArrayなどのボックス化されていない配列タイプを選択することをお勧めします。

于 2011-01-17T09:55:23.443 に答える
3

下部にIOがあり、RAMを表す1つ以上の可変ベクトルを持つモナド変換子スタックを検討します。

于 2011-01-17T07:34:50.857 に答える