1

リスト内のすべてのサブリストを逆にする関数を書きたいと思いました (ただし、最上位のサブリストのみ)。filterリストだけでを使用する reverse前に を実行できるかどうかを調べようとしましたが、それは単に に逆になります。次のような出力を探しています。map(filter list? (reverse '((1 2) 9 (16 5) 64)))((16 5) (1 2))((2 1) 9 (5 16) 64))

mapとを使用することになってreverseいますが、そもそもそこに到達できませんでした。

4

1 に答える 1

3

それは簡単です。逆にする前に、各項目がリストであるかどうかを尋ねるだけです。

(define lst '((1 2) 9 (16 5) 64))

(map (lambda (e)
       (if (list? e) (reverse e) e))
     lst)

> '((2 1) 9 (5 16) 64)

filter実際のリストのみを逆にする必要がある場合でも、入力リスト内のすべての要素を処理することに関心があるため、この場合は機能しません。

于 2012-07-19T18:55:09.587 に答える