方案新手 - 编写清单的困难

时间:2015-02-06 00:09:51

标签: scheme

我正在尝试完成这个练习题,以便在计划方面做得更好,但对于我到目前为止的代码,它给了我一个警告说:"编译时警告:可能在调用中可能出现错误的参数计数(缺点) (列表(车l1)(车l2))"

我一直在看这段代码,但仍然无法弄清楚我做错了什么。

define (zip l1 l2) 
(if (or (null? l1) (null? l2))
 (cons (list (car l1) (car l2))
   (zip (cdr l1) (cdr l2)))))

(define (map-binary func l1 l2) 
 (map (lambda (l2) (apply func l2)) (zip l1 l2)))

1 个答案:

答案 0 :(得分:1)

cons的调用没有任何问题,但你错过了zip过程的第一个左括号和基本情况,这将结束递归:

(define (zip l1 l2) 
  (if (or (null? l1) (null? l2))
      '() ; this was missing
      (cons (list (car l1) (car l2))
            (zip (cdr l1) (cdr l2)))))