颠倒对的顺序

时间:2017-04-03 01:05:49

标签: racket reverse

我正在尝试在Racket中编写一个函数来反转对的顺序。例如,给定列表'(1 2),该函数应该产生'(2 1)。到目前为止,这是我的代码:

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

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

1 个答案:

答案 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)