2017-04-03 165 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