我对scheme中的append函数有问题

我对scheme中的append函数有问题,scheme,Scheme,所以我一直在做这个简单的换位程序,有人能告诉我为什么我的附加不起作用吗 (define stuff (lambda (x y) (if (null? y) 0) (if (not (null? (car y))) (stuff (append x (list (map car y))) (map cdr y))) )) (define x '()) (define y '(( 1 2 3 4 )( 4 5 6 7 )( 7 8 9 0 ))) (stuff x

所以我一直在做这个简单的换位程序,有人能告诉我为什么我的附加不起作用吗

(define stuff
  (lambda (x y)
      (if (null? y) 0)
      (if (not (null? (car y))) (stuff (append x (list (map car y))) (map cdr y)))
  ))

(define x '()) 
(define y '(( 1 2 3 4 )( 4 5 6 7 )( 7 8 9 0 )))
(stuff x y) 

如果您查看调试语句,它似乎是有效的,您不能像现在这样在一行中编写两个
if
表达式;因为
如果
是一个表达式,它将计算第一个表达式(
(null?y)0)
),放弃答案(因为您没有在任何地方使用它),然后运行第二个表达式(如果
(car y)
为空,它将返回一个未定义的值)。另外,如果
y
不是空的,但是它的第一个元素是空的,会发生什么?那件事没有得到处理。通常,在Scheme中,使用
cond
替换其他语言中的if-elseif-else链。否则失败的具体原因是什么?如果你解决了
if
问题并处理了我提到的另一个案例,我认为你的代码会工作或几乎工作。

我得到了同样的错误(定义内容(lambda(xy)(cond((not(null)(cary)))(内容(append x(list(map cary)))(map cdr y)))你还需要处理
(null?y)
(null?(car y))
您的
条件表达式中的大小写。您想做什么?类似于:
(映射列表“(1234)”(4567)”(7890))
?和“如果您查看调试语句”都不是很有帮助。我看不到任何调试语句。。。