clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
misha 2018-01-15T19:44:20.000085Z

@potapenko не понял юзкейса для либы

potapenko 2018-01-15T19:49:34.000222Z

как бы там все понятно описано. нет?

misha 2018-01-15T19:50:05.000240Z

тем не менее )

potapenko 2018-01-15T19:51:55.000470Z

это в основном для игр, где тебе нужно последовательно показывать и изменение данных (стейта) и отрисовывать.

potapenko 2018-01-15T19:52:18.000314Z

Например тебе нужно создать очередь, например в игре, показать одну анимацию, потом поменять стейт чтобы циферку поменять - показать информацию о балансе например игрока, потом еще какие телодвижения. В очередь поместил, все хорошо. Но проблема что стейт поменялся где-то в середине очерди. А тебе нужно отрисовывать или вычислять в этой точке на основании новых данных.

potapenko 2018-01-15T19:53:14.000516Z

вот конвейер он создаст новые элементы очереди где-то посередине и добавит их так, что разрабочику не нужно будет ничего думать как это синхронизировать.

potapenko 2018-01-15T19:54:47.000306Z

обычная очередь всегда помещает новые шаги в конец, а нужно чтобы один элемент очереди “разложился” на несколько других.

potapenko 2018-01-15T19:55:31.000171Z

@misha короче как будет у тебя кейс, где последовательность действий сложную нужно будет делать и всяки if/else еще в процессе - сразу захочешь такое.

potapenko 2018-01-15T19:55:47.000354Z

в чистой clojure думаю такое использовать для state machine

potapenko 2018-01-15T19:58:22.000175Z

где-то для флэша была статья

potapenko 2018-01-15T19:58:36.000079Z

попрошу у флэшеров, может где осталось

misha 2018-01-15T20:19:04.000002Z

читаю

misha 2018-01-15T20:20:54.000256Z

мне просто это ну очень напоминает (cond->) или обычный корасинк канал

misha 2018-01-15T20:21:33.000485Z

+ ты очередью называешь сразу и очередь (лол) функций на выполнение, и их выполнение

misha 2018-01-15T20:22:02.000178Z

хотя это опять же редюс или луп

misha 2018-01-15T20:23:02.000219Z

такой "выполнятор" последовательных действий в кложе - agent, в скрипте - атом, потому что однопоточный жс

misha 2018-01-15T20:23:38.000009Z

может я бы просто такое в либу не оборачивал, хз.

misha 2018-01-15T20:26:04.000133Z

а может там какой-то нюанс, который я не учитываю, ради решения которого стоит и в либку обернуть

potapenko 2018-01-15T21:36:41.000046Z

“Вложенность” вот главная фича. Когда ты делаешь это через core.async тебе нужно заботится о callstack - ждать в главне chain-е, кода выполнится chan в вызываемой фукнции. А таких вот цепочек може быть много. Подход с conveyor это упрощает. Можешь сделать через core.async, конечно, но мне не хватало моего старого решения. Все получается наглядно и понятно.

misha 2018-01-15T21:43:01.000142Z

да у меня как-то и юзкейса пока не было именно так, с таймаутами чейнить вызовы функций. разве что в составе стейтмашины, но твой конвеер как отдельная компонента скорее всего не сгодится (в той машине, что у меня недописанная)

misha 2018-01-15T21:44:01.000168Z

спрведливости ради, я до анимаций на мобилочках и вебе пока не добрался, может там будет как раз в тему

potapenko 2018-01-15T21:54:07.000110Z

это для игровой логики еще хорошо

potapenko 2018-01-15T21:55:15.000068Z

все начиют с простого игрового loop и event-driven, потом приходят к очередям. а конвейер так вооще заставляет все переосмыслить. очень просто, но очень полезно.