0

私はscheme(lisp)で関数を作成しています。この関数では、以下のように、リストを逆に変換する必要があります。

(cons list (cdr (reverse list)))

私がこのリストを持っていると考えてください'(0 1 2)、望ましい出力は次のようになります:

(0 1 2 1 0)

しかし、私は得る:

((0 1 2) 1 0)

リスト自体ではなく、リストの値を返す関数はありますか?

4

2 に答える 2

2

あなたは読むべきです:http cons//en.wikipedia.org/wiki/Cons

cons要素を別の要素とペアにします。要素をリストとペアリングする場合、この要素をリストの先頭に追加します。あなたの場合、逆リストにペアリングしている要素自体がリストです。wikiページの例を参照してください。

ここで必要なのはappend、これら2つのリストを連結するためです。

于 2012-11-11T13:24:52.837 に答える
0

次のように追加します。

(define (mirror ls)
    (if (null? (cdr ls))
        ls
        (let ((x (car ls)))
            (append 
                (list x)
                (mirror (cdr ls))
                (list x)))))

それが役に立てば幸い :)

于 2012-11-11T19:01:56.007 に答える