Size: a a a

Clojure — русскоговорящее сообщество

2020 January 10

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Еще lazy-cat есть
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
у вас кложа руссифицирована, не понимай русский говорит
источник

AD

Artur Dumchev in Clojure — русскоговорящее сообщество
Ivan Grishaev
Такое в голове крутится
(lazy-seq (concat (get-items) (lazy-seq (get-items))))
а почему ты просто не напишешь (doc concat), там первая строчка "Returns a lazy seq...".
Я без подколов, просто интересно, может, сам чего-то не понимаю)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ivan Grishaev
Такое в голове крутится
(lazy-seq (concat (get-items) (lazy-seq (get-items))))
(repeat (get-items))
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
но надо еще с выходом
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
(mapcat (fn [_] (get-items)) (range))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ivan Grishaev
но надо еще с выходом
по какому условию?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в ответе получаю мап с ключами items и has-more
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
соотв. если has-more, то еще подтянуть
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
если уж совсем точно
(list-objects [this bucket]
   (s3/list-objects creds bucket))


 (iter-objects [this bucket]
   (lazy-seq
    (let [result (list-objects this bucket)
          {:keys [object-summaries
                  truncated?]} result]
      (if truncated?
        object-summaries
        (concat object-summaries
                (s3/list-next-batch-of-objects creds result))))))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а на выходе что должно выдаваться из ленивой коллекции?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну, айтемы, пока выполняется погинация
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ну сделай take-while результата на непустоту
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
да вроде норм, надо только врапнуть последнюю форму в lazy-seq
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
или так
(if truncated?
        object-summaries
        (lazy-cat object-summaries
                  (s3/list-next-batch-of-objects creds result)))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ivan Grishaev
но надо еще с выходом
вот «почти», последний элемент пропадает
(defn get-items
 []
 {:items [1 2 3]
  :has-more (rand-nth [true true true false])})

(->> (repeatedly get-items)
    (take-while :has-more)
    (mapcat :items))
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в смысле что пропадает?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну, результат с :has-more false отбрасывается
но его же тоже нужно забрать
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а, да
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
источник