Size: a a a

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

2020 November 05

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
@, сори, что смешал опять понятия
в результате я запутался, что у тебя было и где с эвейтами и блокировками
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
то есть если хочется просто долгую возню с постами сделать в фоне, то просто await на всю функцию, которая это делает
Да собственно вот у меня пример параллельных запросов :)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Ну вот хаскель про то, чтобы не прятать вообще ничего и поэтому на нем больно программировать)
странно, про боль жалоб не слышал
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Alex Bubnov
а у тебя фьючеры перестают отличаться от прочих значений.
не, это абсолютно неправильная формулировка.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
странно, про боль жалоб не слышал
Ну, я уже долго пытаюсь понять, как программировать на хаскеле. Пока дошел до того, что монад недостаточно, нужны еще монад трансформеры :)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Alex Bubnov
не, это абсолютно неправильная формулировка.
Я правильно понял, что идея в том, чтобы передать continuation, которое отдает call/cc коллбэком во фьючер?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Да собственно вот у меня пример параллельных запросов :)
(defn get-olimp-events
 [ids]
 (->> ids
      (mapv #(http/get olimp-event-url {:query-params {:id %}}))
      (mapv #(json/parse-string (:body (deref %)) true))))
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Да, так получше наверное
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Говнокодил на скорую руку, хотел как раз поменять эту часть)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Да собственно вот у меня пример параллельных запросов :)
ты уверен, что у тебя нормально распараллеливалось?
map ленивый, и новый запрос вроде должен после вытягивания элемента из второго мапа инициализироваться
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ты уверен, что у тебя нормально распараллеливалось?
map ленивый, и новый запрос вроде должен после вытягивания элемента из второго мапа инициализироваться
А, я забыл разленивить его
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Я правильно понял, что идея в том, чтобы передать continuation, которое отдает call/cc коллбэком во фьючер?
грубо говоря, future.await() отдает continuation куда-то сильно выше по стеку(условно, планировщик), где ведется трекинг, кто чего ждет, и когда операция завершена - планировщик дергает continuation, управление возвращается в твой код вместе со значением фьючера.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
А, я забыл разленивить его
ну просто оно вроде не так будет работать, как ты хочешь
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Да, я понимаю, что запросы пойдут только тогда, когда я буду доставать) Косяк
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
по 32 штуки, если не ошибаюсь
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Alex Bubnov
грубо говоря, future.await() отдает continuation куда-то сильно выше по стеку(условно, планировщик), где ведется трекинг, кто чего ждет, и когда операция завершена - планировщик дергает continuation, управление возвращается в твой код вместе со значением фьючера.
короче, эффекты и продолжения - это низкоуровневая механика, поверх которой можно сделать свой собственный go.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Alex Bubnov
грубо говоря, future.await() отдает continuation куда-то сильно выше по стеку(условно, планировщик), где ведется трекинг, кто чего ждет, и когда операция завершена - планировщик дергает continuation, управление возвращается в твой код вместе со значением фьючера.
Ну да, в итоге вроде то же самое, что и грин треды
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Но что мне не нравится в этом, что кажется не так удобно управлять таймаутами и тем, на каком потоке выполняется твой код
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Ну да, в итоге вроде то же самое, что и грин треды
да. только гринтреды как библиотека
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Но что мне не нравится в этом, что кажется не так удобно управлять таймаутами и тем, на каком потоке выполняется твой код
не так удобно по сравнению с чем?
источник