Size: a a a

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

2021 March 15

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Друзья, объясните мне, зачем функа sequence в std-lib ?
(Если не затрагивать тему трансдьюсеров)
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Damir Farazetdinov
Друзья, объясните мне, зачем функа sequence в std-lib ?
(Если не затрагивать тему трансдьюсеров)
Ну
(seq '())
;; => nil

(sequence '())
;; => ()

(seq nil)
;; => nil

(sequence nil)
;; => ()
Вот такая разница как минимум
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Юзкейс пока не придумал
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Как бы сорскод только эту разницу и показывает
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
мб это удобно, чтобы эээ ууу
Нилы в seq конвертнуть? Мб алгоритм с conj/cons какой, яхз. Они правда и так с нилом норм работают. Че-нить похожее, что нульпоинтером может захотеть плюнуться, если нил получит
источник

A

Andjey in Clojure — русскоговорящее сообщество
andei papkov
кажется дошло, если буфер переволнится, то те кто кладут начнут парковаться
если буфер переполнился будет исключение, так что надо либо успевать все вычитывать либо делать sliding-buffer/dropping-buffer
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Andjey
если буфер переполнился будет исключение, так что надо либо успевать все вычитывать либо делать sliding-buffer/dropping-buffer
не исключение, chan запаркуется и не даст переполнить буффер
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Как бы сорскод только эту разницу и показывает
https://github.com/clojure/clojure/blob/1.0/src/clj/clojure/core.clj#L1452-L1459
все выглядело немного подругому в 1.0 )
источник

A

Andjey in Clojure — русскоговорящее сообщество
возможно я просто что-то не так делал, в репле все хорошо работало, а на "проде" вылетала ошибка постоянно No more than 1024 pending puts are allowed on a single channel пришлось слайдинг буфер поставить
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andjey
возможно я просто что-то не так делал, в репле все хорошо работало, а на "проде" вылетала ошибка постоянно No more than 1024 pending puts are allowed on a single channel пришлось слайдинг буфер поставить
это у каналов без указания буфера, если я ничего не путаю
источник

A

Andjey in Clojure — русскоговорящее сообщество
то есть если бы я просто (chan 1) вместо (chan) использовал все ок было бы? надо попробовать, спасибо
источник

l

lrrr_lrrr in Clojure — русскоговорящее сообщество
Andjey
возможно я просто что-то не так делал, в репле все хорошо работало, а на "проде" вылетала ошибка постоянно No more than 1024 pending puts are allowed on a single channel пришлось слайдинг буфер поставить
Звучит как защита от бутылочного горлышках
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andjey
возможно я просто что-то не так делал, в репле все хорошо работало, а на "проде" вылетала ошибка постоянно No more than 1024 pending puts are allowed on a single channel пришлось слайдинг буфер поставить
либо при пихании в канал неблокирующими способами
источник

A

Andjey in Clojure — русскоговорящее сообщество
ну да, пихал через go конечно )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andjey
то есть если бы я просто (chan 1) вместо (chan) использовал все ок было бы? надо попробовать, спасибо
в любом случае очередь на 1024 элемента вроде только в этом случае создаётся
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
это у каналов без указания буфера, если я ничего не путаю
при указании числа там создаётся fixed-buffer, который вроде не может так ругаться
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Andjey
возможно я просто что-то не так делал, в репле все хорошо работало, а на "проде" вылетала ошибка постоянно No more than 1024 pending puts are allowed on a single channel пришлось слайдинг буфер поставить
ну эта ошибка вообще не про put
https://github.com/clojure/core.async/blob/472340f947789513775d2dde5a478ea1ab03d333/src/main/clojure/cljs/core/async/impl/channels.cljs#L140-L144
это про чтение из канала
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну, по коду ветки с использованием MAX-QUEUE-SIZE только при незаданном buf
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
там эта проверка и для put, и для read
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
зануда мод он - не заданном размере - зануда мод офф
источник