2011-01-17 3 views
6

80 년대 컴퓨터 애호가였던 많은 사람들은 Infocom 시리즈의 인터랙티브 픽션 게임, 특히 'Zork', 'Hitchhiker 's Guide to Hitchhiker 's Guide' 은하 ','Planetfall ','영원히 항해하는 마음 ', etc.하스켈에서 쓰기 가능 메모리 다루기 - Infocom의 Z-Machine VM 구현

이러한 게임은 "Z-Machine" 가상 컴퓨터 위에 구현되었습니다. 이 기계는 RAM 블록, 스택 및 가상 프로세서로 구현됩니다. 이 프로세스는 RAM을 동적으로 읽고 쓸 수있는 명령어를 실행합니다.

제 질문은 이것입니다 : VM의 RAM은 동적입니다. 이 RAM을 (그리고 가상 머신의 구조를 전체적으로) 표현할 수있는 효율적이고 합리적인 관용법은 무엇입니까? 그래서이 게임을 실행하기위한 소프트웨어를 구현할 수 있습니까? 예를 들어, Data.Array를 사용하여 RAM 및 상태 모나드를 나타내야합니까?

+0

이것을 구현 한 적이 있습니까? – amindfv

+0

나는 호기심이 많아 매우 흥미로울 수있다. – Textmode

답변

5

하스켈은 다양한 수준의 부작용 제어 및 박스형 및 박스형 변형을 가진 다양한 유형의 배열을 가지고 있습니다. 박스형 배열은 값에 대한 포인터의 배열이며 unboxed 배열은 인접한 메모리 블록의 배열입니다. RAM의 경우 이것을 연속 메모리 블록으로 처리하기를 원할 것입니다. STUARray 나 IOUArray 또는 StorableArray 등과 같은 unboxed 배열 유형을 원할 수도 있습니다.

3

바닥에 IO가있는 모나드 변압기 스택과 RAM을 나타내는 하나 이상의 mutable vectors을 고려해 보겠습니다.

+0

Data.Vector.Unboxed의 unboxed 버전이 더 적합합니다. –

+1

가변 배열을 원할 경우 모든 IO가 필요하지 않습니다. ST 모나드는 더 잘 맞습니다. –

관련 문제