所以我需要一些帮助来实现使用 Scheme 的 Make-memory 程序。我需要两条消息“写”和“读”。所以它会像 (mymem 'write 34 -116) 和 (mymem 'read 99) 对吗?和 (define mymem (make-memory 100)) .....我将如何在方案中实现它?使用 Alist???我需要一些帮助来编码它。我有这段代码,它使 make-memory 成为一个过程,当你运行 mymem 时,你会得到((99.0)),我需要做的是重复这个,所以我得到一个带有点对的 alist 到((0.0))。那么关于如何编码的任何建议?有没有人知道我可以做些什么来重复和使消息写入和阅读?
(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))
是的,这是一个作业,但我写了这段代码。我只是需要一些帮助或指导。是的,我确实知道可变长度参数列表。