2017-09-20 34 views
0
(define-struct make-no-pairs[]) 
(define-struct some-pairs[p ps]) 

から最後の「対」を削除し、この構造体は、「ペア」(2数)をとり、「ペア」(メイクいくつかのペアを[PのPS])例は、いくつかのペアを定義、構造体を

(make-some-pairs (make-pair 10 10) (make-no-pairs)) 




(check-expect (any-undo (make-some-pairs 10 10 (make-no-pairs))) make-no-pairs) 

これを可能にするために「元に戻す」機能をどのように設計しますか?

私たちは再帰を行っています。 は、マウスイベントがあるたびに円を作成し、キーを押すたびに最後の円 を削除するビッグバンアニメーションを作成しようとしています。

ありがとうございます!あなたが私のコードをもっと必要としているのであれば、私はちょうどコメントすることができ、私はプログラム全体を投稿します。

+0

あなたは何をmake-some-pairsが投稿する必要があると思いますし、any-undoは何もしません。 –

+0

なぜ、あなたは空のペアを使用できないのでしょうか? –

答えて

0

あなたが従うことができるアイデアは、いくつかの発注を強制することです。常にリストの最後またはリストの先頭に追加し、常にリストの先頭のリストから削除します。

あなたの追加機能は、それからちょうどあなたのビッグバン機能でそれらを使用し、それだけで私は、これらの機能の実装の詳細を追加することができますが、私はより多くの情報が必要になります:)動作するはず

よう
(define (handle-click x y aworld) 
    (... define logic to cons new (x, y) to front of 
    your list of points in your world)) 

(define (handle-key akey aworld) 
    (... define logic to remove the first element of the list 
    of (x, y) in your world (should be very simple))) 

をsomethlingないかもしれませんあなたがビッグバンとあなたのキー/マウスのハンドル機能を提供する世界では

また、私は「Some-pairs」はそれ自身の構造ではなく、あなたの世界の一部であり、ペア。もちろん、これはあなたのコードのすべてを見ることなくです。

関連する問題