如何在CLISP中实现时间限制执行机制?

mat*_*jch 5 lisp clisp common-lisp

我的想法是这样的:

(run (long-calculation vars) time-limit)
Run Code Online (Sandbox Code Playgroud)

返回结果(long-calculation vars)nil如果time-limit到达.

Pet*_*ris 1

如果您可以找到该运算符的实现amb,那么您可以执行以下操作:

(defmacro run (comp time-limit)
  `(amb comp
       (progn (delay ,time-limit)
              nil)))
Run Code Online (Sandbox Code Playgroud)

请小心,不要将其与 McCarthyamb运算符混淆。amb应该在单独的线程中评估它的两个参数,并选择先完成的那个。例如,在 Haskell 中,它在Data.Unamb中进行了描述。