using stop-when in racket

2019-07-20 01:34发布

问题:

I've been messing around with this program. It takes a number and adds 1 to it. I am wondering how exactly could you use stop-when here? For example, to make it stop at 5? I suppose a cond statement is necessary here. Thanks.

(require 2htdp/image)
(require 2htdp/universe)

(define (my-tick n)
(add1 n))

(define (my-render n)
  (text (number->string n) 36 "silver"))


(big-bang 1 (on-tick my-tick 2) (to-draw my-render))

回答1:

Give stop-when a predicate that consumes a world and returns true or false.

For more info, see the docs here.

Here's a version of your example that stops at 5:

(require 2htdp/image)
(require 2htdp/universe)

(define (my-tick n) (add1 n))

(define (my-render n)
  (text (number->string n) 36 "silver"))

(define (=5 n) (= n 5))

(big-bang 1 (on-tick my-tick 2) (to-draw my-render) (stop-when =5))


标签: scheme racket