Если бы вы могли найти реализацию для оператора amb
, вы могли бы сделать что-то вроде этого:
(defmacro run (comp time-limit)
`(amb comp
(progn (delay ,time-limit)
nil)))
Будьте осторожны, чтобы не ошибиться с оператором McCarthy amb
. amb
должен оценивать оба аргумента в отдельных потоках и выбирать тот, который заканчивается первым. Например, в Haskell это описано в Data.Unamb .