2015-02-06 26 views
0

我想完成这个练习题,以便在计划中更好,但对于我迄今为止的代码,它给了我一个警告:“编译时警告:可能出现错误的参数呼叫计数(缺点(名单(汽车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

有ISN对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)))))