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)))))
Другие вопросы по тегам