所以我需要一些使用Scheme实现Make-memory程序的帮助。我需要两个消息'写'和'读。那就像(mymem'写34 -116)和(mymem'读99)吧?和(定义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))
是的,这是一项作业,但我写了这段代码。我只需要一些帮助或指导。是的,我确实知道可变长度的参数列表。
答案 0 :(得分:2)
答案 1 :(得分:0)
似乎您需要的是make-vector
。
答案 2 :(得分:0)
两个似乎有错误的地方(cons n 0)
和(cons (- n 1) 0)
这就是为什么你得到(0。0)s,因为你把n或n-1都归为0而不是列表。