-1

consのようなペアを構築するためのものであることは知っていますが、ここでafter(cons 2 (cons 3 empty))を使用するコードはわかりません。数字のために構築されていませんか?どのように2つの引数を取ることができますか? それらが 2 つの引数を取ることができる場合、それらをどのように評価しますか? 誰かがコードを翻訳してください。consemptyconscons[(empty? lst) empty]

(define (removed2 lst)
  (cond
       [(empty? lst) empty]
       [(not (member? (first lst) (rest lst)))
        (cons (first lst) (removed2 (rest lst)))]
       [else (removed2 (rest lst))])
4

1 に答える 1

2

良い本やSchemeのチュートリアルを読むことをお勧めします.Schemeでコーディングを始める前に、よく理解しておくべき最も基本的な概念の説明を求めています. たとえば、このは素晴らしい出発点です。私はあなたの質問に対処します:

consはペアを構築するためのものであることを知っています(cons 2 (cons 3 empty))

実際、好きなもののペアを作ることができます…数字のペア、ペアのペア、名前を付けてください。

consしかし、ここでafterを使用するコードがわかりませんempty

この場合、emptyは空のリストを意味します'()。したがって、最初の要素がアトム (この場合は数値) で、2 番目の要素が空のリストであるペアを構築できます。これが、Scheme で適切なリストを構築する方法です!

cons数字のために構築されていませんか?

いいえ、それは他のペアを含むあらゆるペアを構築するためのものです。

どのconsように2つの引数を取ることができますか? それらが 2 つの引数を取ることができる場合、それらをどのように評価しますか?

そして、なぜですか?すでに述べたように、ペアconsを構築するためのものです。ペアは 2 つのもので構成されるため、2 つの引数を取ります。それぞれを順番に評価し、それらをくっつけてペアを形成します。本当に、本当にドキュメンテーションを読むべきです。cons

そして、誰かがコードを翻訳して[(empty? lst) empty]ください

これは、再帰的にトラバースしているリストが空であるかどうかを尋ねているだけです。空である場合は、空のリストを返します。これは、リストを返す再帰プロシージャの基本ケースです。この手順は結果として単純にリストを作成するだけです。これはcons要素をペアに変換するためであり、最後のペアは空のリストで終了し、適切なリストが生成されます。基本的に、Scheme でリストを作成する方法は次のとおりです。

(cons 1 (cons 2 (cons 3 empty)))
=> '(1 2 3)
于 2015-10-31T15:07:02.453 に答える