我正在尝试在Racket中编写一个函数来反转对的顺序。例如,给定列表'(1 2),该函数应该产生'(2 1)。到目前为止,这是我的代码:
(define (reverse aList)
(cons (second aList)
(first aList))
然而,这并没有产生正确的答案。当我用'(ab)进行测试时,它返回'(b.a)而不是'(ba)。如何摆脱b和a之间的期间
答案 0 :(得分:2)
你应该:
(define (reverse-pair lst)
(cons (second lst) (cons (first lst) empty)))
如球拍docs中所述:
cons函数实际上接受任何两个值,而不仅仅是第二个参数的列表。当第二个参数不为空且不是由cons生成时,结果以特殊方式打印。与cons连接的两个值打印在括号之间,但是在它们之间有一个点(即,由空格包围的句点)。
所以,
> (cons 1 2)
'(1 . 2)
> (cons 1 (cons 2 empty)) ; equivalent to (list 1 2)
'(1 2)