在方案中测量时间

measuring time in scheme

有没有办法实现这样的东西

while time left
  do something

racket 中某个变量设置为 x secs/minutes/hours 的时间在哪里?

我可以使用一些常数来模拟时间,如

(define (loop time)
   (if (< time some-constant)
       ((do something)
       (loop (- time 1)))
       do-nothing))

但我必须尝试看看什么常量会给我一小时,等等。

尝试以下操作:

(define (loop term-time)
  (when (<= (current-seconds) term-time)
        (begin <do something>
               (loop term-time))))

然后你可以用

调用它
(loop (+ (current-seconds) (* 60 60))) -- do it for one hour

如果您只想定期 <do something>,但不想在 100% CPU 使用率下执行此操作,请在 <do something> 中包含 (sleep <secs>)实现这一目标。