PLT方案记忆

时间:2010-01-13 22:36:05

标签: racket

所以我需要一些使用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))

是的,这是一项作业,但我写了这段代码。我只需要一些帮助或指导。是的,我确实知道可变长度的参数列表。

3 个答案:

答案 0 :(得分:2)

您使用设计食谱的课程是否为How To Design Programs

如果是这样,看起来你正处于第一步。

如果没有:您是否可以使用一组示例指定您要查找的行为,然后将其转换为测试用例?

答案 1 :(得分:0)

似乎您需要的是make-vector

答案 2 :(得分:0)

两个似乎有错误的地方(cons n 0)(cons (- n 1) 0) 这就是为什么你得到(0。0)s,因为你把n或n-1都归为0而不是列表。