我正在尝试制作一个内存系统,您可以在其中输入一些内容到内存槽中。所以我正在做的是制作一个 Alist,而这对汽车是内存位置,而 cdr 是 val。我需要程序来理解两条消息,读取和写入。只读显示选定的内存位置以及分配给该位置的 val 和 write 更改位置或地址的 val。如何使我的代码读取您想要的位置并写入您想要的位置?随意自己测试一下。任何帮助将非常感激。这就是我所拥有的:
(define make-memory
(lambda (n)
(letrec ((mem '())
(dump (display mem)))
(lambda ()
(if (= n 0)
(cons (cons n 0) mem) mem)
(cons (cons (- n 1) 0) mem))
(lambda (msg loc val)
(cond
((equal? msg 'read) (display
(cons n val))(set! n (- n 1)))
((equal? msg 'write) (set! mem
(cons val loc)) (set! n (- n 1)) (display mem)))))))
(define mymem (make-memory 100))