从Racket开始,小问题

时间:2017-04-06 15:10:17

标签: scheme racket

我从Racket开始,我想在Racket中显示这个函数的值,该函数添加了一个缺点列表的cdrs:

(define (add-cdrs '((a . 1)(a . 2)(a . 3)(a . 4)))
(if (null? l)
    0
    (+ (cdr(car l))(add-cdrs(cdr l)))))

输出应为:10

但是,我不知道该怎么做或在哪里放置显示功能。

谢谢

1 个答案:

答案 0 :(得分:3)

您将使用过程调用(绑定实际列表)混淆过程定义(在这种情况下应该声明将用于保存列表的参数)到参数)。除此之外,你的逻辑是正确的。试试这个:

(define (add-cdrs lst)
  (if (null? lst)
      0
      (+ (cdr (car lst)) (add-cdrs (cdr lst)))))

(add-cdrs '((a . 1) (a . 2) (a . 3) (a . 4)))
=> 10