累积不在Scheme Lang R5RS中工作

时间:2016-02-15 18:44:05

标签: scheme

我解决了使用mapaccumulate时遇到的问题,但它给了我这个错误:"accumulate: undefined;" cannot reference undefined identifier.

这是我的代码:

;Procedure to test it with
(define (double x)
   (* 2 x))

(define (my-map proc sequence) 
   (accumulate (lambda (x y) (cons (proc x) y)) '() sequence))

请有人告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

在R5RS中未定义过程accumulate。但是很容易定义自己的:

(define (accumulate proc init lst)
  (if (null? lst)
      init
      (proc (car lst)
            (accumulate proc init (cdr lst)))))

为了将来参考,accumulate在其他编程语言中也称为foldrfold-rightinjectreduce,请咨询您的口译员{{3更多细节。