2017-04-03 22 views
0

私はペアの順序を逆転させる関数をラケットに書き込もうとしています。例えば、リスト '(1 2)が生成するはずの'(2 1)が与えられているとします。これまでのコードはこれまでのところです:ペアの順序を逆にする

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

これは正しい答えを生成していません。 '(a b)でテストすると、'(b a)の代わりに'(b。a)が返されます。期間をbとaの間で取り除くにはどうすればよいですか?

答えて

1

あなたが持っている必要があります:ラケットのdocsで述べたように

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

短所は、実際には任意の二つの値、第二引数のためだけではなく、リストを受け付ける関数。 2番目の引数が空ではなく、consによって生成されない場合、結果は特別な方法で出力されます。 consと結合された2つの値は、括弧で囲まれていますが、間にはドット(空白で囲まれたピリオド)が表示されます。

ので、

> (cons 1 2) 
'(1 . 2) 
> (cons 1 (cons 2 empty))  ; equivalent to (list 1 2) 
'(1 2) 
+0

はそんなにアレクサンダーありがとうございました!! – Vic

関連する問題