私はscheme(lisp)で関数を作成しています。この関数では、以下のように、リストを逆に変換する必要があります。
(cons list (cdr (reverse list)))
私がこのリストを持っていると考えてください'(0 1 2)、望ましい出力は次のようになります:
(0 1 2 1 0)
しかし、私は得る:
((0 1 2) 1 0)
リスト自体ではなく、リストの値を返す関数はありますか?
あなたは読むべきです:http cons
://en.wikipedia.org/wiki/Cons
cons
要素を別の要素とペアにします。要素をリストとペアリングする場合、この要素をリストの先頭に追加します。あなたの場合、逆リストにペアリングしている要素自体がリストです。wikiページの例を参照してください。
ここで必要なのはappend
、これら2つのリストを連結するためです。
次のように追加します。
(define (mirror ls)
(if (null? (cdr ls))
ls
(let ((x (car ls)))
(append
(list x)
(mirror (cdr ls))
(list x)))))
それが役に立てば幸い :)