颠倒对的顺序

问题描述 投票:0回答:1

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

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

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

racket reverse
1个回答
2
投票

你应该有:

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

正如Racket的docs所述:

cons函数实际上接受任何两个值,而不仅仅是第二个参数的列表。当第二个参数不为空且不是由cons生成时,结果以特殊方式打印。与cons连接的两个值被打印在括号之间,但是在它们之间有一个点(即,由空格包围的周期)。

所以,

> (cons 1 2)
'(1 . 2)
> (cons 1 (cons 2 empty))     ; equivalent to (list 1 2)
'(1 2)
© www.soinside.com 2019 - 2024. All rights reserved.