问题描述
我想在每个滴答声中做两件不同的事情。在大爆炸环境中可以有多个即时事件处理程序吗?
这是我想做的:
(big-bang world
(on-draw show-world)
(on-tick event1 event2 1))
或
(big-bang world
(on-draw show-world)
(on-tick event1 1)
(on-tick event2 1))
这两种方法都不允许。有办法做到这一点吗?
谢谢您。
推荐答案
表示什么?
例如,假设
;; A World is a Nat (a natural number).
下面是两个刻度处理程序:
;; advance-by-one : World -> World
(define (advance-by-one w)
(add1 w))
;; reset-at-ten : World -> World
(define (reset-at-ten w)
(if (< w 10) w 0))
如果当前World是9
,那么您期望下一个World是什么?(我能想出两个似是而非的答案,你必须选一个。)
是否可以定义另一个具有您想要的含义的函数,并将该(单个)函数用作记号处理程序?(提示:您应该使用两个现有的处理程序函数,而不是尝试将它们的定义合并到一个大函数中。)
(如果您已经到达ISL:)如果您有三个、四个或十个您想要组合在一起的处理程序怎么办?您能设计一个接受处理程序列表并生成单个处理程序函数的函数吗?