2017-04-03 81 views
0

我正在尝试在球拍中编写一个函数,它将颠倒对的顺序。例如,给出列表'(1 2)该函数应该产生'(2 1)。这是我的代码到目前为止:颠倒对的顺序

(define (reverse aList) 
    (cons (second aList) 
     (first aList)) 

但是,这并没有产生正确的答案。当我使用'(a b)进行测试时,它将返回'(b。a)而不是'(b a)。如何摆脱b和a之间的期间

回答

1

你应该有:

(define (reverse-pair lst) 
    (cons (second lst) (cons (first lst) empty))) 

如球拍的docs说:

利弊函数实际上接受任何两个值,而不仅仅是作为第二个参数列表。当第二个参数不是空的,而不是由cons产生时,结果以特殊方式打印。用cons连接的两个值被打印在圆括号之间,但是在它们之间具有一个点(即,由空白围绕的时段)。

所以,

> (cons 1 2) 
'(1 . 2) 
> (cons 1 (cons 2 empty))  ; equivalent to (list 1 2) 
'(1 2) 
+0

太感谢你了!亚历山大 – Vic