颠倒对的顺序
问题描述:
我正在尝试在球拍中编写一个函数,它将颠倒对的顺序。例如,给出列表'(1 2)该函数应该产生'(2 1)。这是我的代码到目前为止:颠倒对的顺序
(define (reverse aList)
(cons (second aList)
(first aList))
但是,这并没有产生正确的答案。当我使用'(a b)进行测试时,它将返回'(b。a)而不是'(b a)。如何摆脱b和a之间的期间?
答
你应该有:
(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)
太感谢你了!亚历山大 – Vic