从某些对定义结构中删除最后一个"pair"


(define-struct make-no-pairs[])
(define-struct some-pairs[p ps])

此结构采用"对"(2个数字)和一个"对"(make-some对[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)

我将如何设计" Any-undo"功能以使其成为可能?

我们正在做递归,我正在尝试制作一个大爆炸动画每次发生鼠标事件并删除最后一个圆圈时,都会创建一个圆圈每次按下键时。

预先感谢!如果您需要更多的代码来帮助我发表评论,我将发布整个程序。

您可以遵循的一个想法是执行一些订购。始终添加到列表的末尾或列表的正面,并始终从列表的列表的末端删除。

您可以像

那样具有添加功能
(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)))

然后只在您的大爆炸功能中使用它们,它应该可以正常工作:)我可以为这些功能添加实施详细信息,但是我需要有关您提供的大爆炸和句柄键/鼠标功能的更多信息

另外,我会认为"一对"本身不应该是一个结构,而是您世界的一部分,这只是对的列表。当然,这是没有看到所有代码的。

最新更新