Clojure: лень + core.logic: бесконечный цикл
контекст
В следующем коде бесконечные циклы:
(defn ex13 []
(take 5
(run* [x]
(listo (lcons `a (lcons `b (lcons `c x)))))))
Вопрос:
Это должно быть правильное поведение? (бесконечный цикл?) С другой стороны, код вроде:
(take 5 (range))
берет 5 элементов и распечатывает их.
1 ответ
Решение
Это может быть ошибкой, однако это неправильный способ сделать это, так как результаты run* в любом случае не ленивы.
(run 5 [x]
(listo (lcons `a (lcons `b (lcons `c x)))))