Ayrat
корутины разрешили с барского плеча писать нормально suspend fun foo() { val x = flatMap(…) val y = x.flatMap (…) val z = y.flatMap ( …) … }
Ilya
Но он тут неприменим, кажется.
Igor
по-любому который не корутина
Все таки я не понимаю зачем, если у тебя стрим-по стриму-по стриму, у тебя др проблемы) монады вообще штука спорная, императивная да и вообще перпендикулярна фп
Anonymous
А ещё джава к 2024 будет уметь всё, что умеет котлин. Будет интересно посмотреть.
Ayrat
я говорю что это просто любая монада
Ayrat
в котлин не нужен option 😏, T? же
ага, и резалт не нужен.
Igor
я говорю, что тебе не нужна "любая" монада, это не хаскель (ну скала)
Ayrat
я говорю, что тебе не нужна "любая" монада, это не хаскель (ну скала)
мне нужна моя, которая позволяет мне инкапсулировать API/DB вызовы, с трейсингом, обработкой ошибок и статусом внутри
Igor
Ну попробуй arrow)
Ayrat
вот моя монада сразу собирает трейсинг со всех колов
Roman
Ну попробуй arrow)
ага, там еще какой-то чувак писал type-proof или че-то такое
Ayrat
то есть ты пишешь флатМапы, а там на фоне вся эта монадная хуина мержит, зипит и агрегирует
Anonymous
А мог бы просто на питоне писать
Roman
@omgszer я слышал, там можно писать какие-то экстеншны к компилятору, причем, их по идее должно ИДЕ сразу подхватывать
Roman
но я даже на мамкиного котлиниста не тяну
Anonymous
Ну если ты хочешь расширять язык то может сразу пойти туда, где есть макросы?
Roman
можно сразу пойти, да
Ayrat
Ну если ты хочешь расширять язык то может сразу пойти туда, где есть макросы?
не, спасибо. макросы в скале ломали намертво инкрементальную компиляцию и проект собирался час
Ayrat
проект без изменений, уточню
Igor
@omgszer я слышал, там можно писать какие-то экстеншны к компилятору, причем, их по идее должно ИДЕ сразу подхватывать
обычным людям пока нельзя, api комплятора еще не стабилизировано 47deg что-то там с arrow meta мутят, но вроде еще на стадии ресеча
Anonymous
обычным людям пока нельзя, api комплятора еще не стабилизировано 47deg что-то там с arrow meta мутят, но вроде еще на стадии ресеча
Они же перестали апи компилятора ломать и там сейчас только апи некоторых либ, например корутин, ломается
Igor
А в кложур макросы норм
Ну там же стат. типизации нет для композитных типов, скалисты когда это видят сразу рвутся на месте)
Ayrat
Ну попробуй arrow)
не, спасибо =(
Ayrat
это как коты в скале
Igor
Они же перестали апи компилятора ломать и там сейчас только апи некоторых либ, например корутин, ломается
Не знаю откуда таки сведения, еще не делю назад они ничего не гарантировали
Igor
По этому плагины сейчас пишут только сами jb и google (для compose) тк имеют прямые контакты с котлин командой Ну и 47deg конечно, но они вообще стремные ребята, одно время форкнули компилятор что бы тайпклассы завести
Anonymous
Ну в мажорных релизах ломается, но он на то и мажорный
Igor
Ну и плюс, jb сейчас компилятор переписывают. При этом допустим в kotlin-native уже новый компилятор, а в jvm по умолчанию старый
Anonymous
О, может паттерн матчинг случайно сделают
Igor
Бреслав же сказал что не нужно. Хочешь пм - бери java 🌚
Anonymous
там в питон хотят завезти
Неплохо, может весь coconut скоро завезут
Anatoly
Ноут отрапортовал, что вентилятору на видеокарте хана. Может быть из-за этого у меня в играх всего 30 фпс? :)
Крылатый
Да.
Vasily
@omgszer , можешь на один код глянуть?
Vasily
Очень подозрительно выглядит
Ayrat
Через часок смогу
Vasily
https://github.com/fsprojects/Fabulous/pull/771#issuecomment-652258550
Vasily
Очень подозрительный "хак" для дропа очереди сообщений
Ayrat
Ayrat
мейлбокс же конкурентный, пока ты его читаешь, тебе пихуют
Ayrat
поэтому вот это let queueLength = inbox.CurrentQueueLength будет валидно только и исключительно в ЭТОТ момент времени
Ayrat
и вот этот цикл for i = 1 to queueLength - 1 do
Ayrat
будет уже работать с мейлбоксом такой же или большей длины
Ayrat
я чот нихуя не понял
Ayrat
чо вы вообще там делаете
Vasily
Есть поток апдейтов
Vasily
Меняющих стейт модели
Vasily
Сейчас на каждый апдейт вызывается рендер
Vasily
Хочется от этого уйти
Vasily
И условно во время рендера аккумулировать стейт для следующей отрисовки
Ayrat
ок, а зачем дропать весь текущий мейлбокс?
Ayrat
причем он не дропнет весь мейлбокс
Vasily
Ну у Тима такая наивная теория, что оно сработает
Vasily
По факту нам нужен самый свежий стейт
Vasily
Мож,отпишешь там грамотно?
Ayrat
где хранится стейт? в месаджах мейлбокса?
Vasily
Стейт в лупе
Vasily
Идея следующая
Vasily
Есть поток апдейтов
Ayrat
ну то есть нам надо не дропать меседжи, а нихуя не делать пока isRendering = true?
Ayrat
зачем эти костыли с дропом?
Hog
Зачем аккумулировать стейт?
Vasily
Зачем аккумулировать стейт?
Не аккумулировать, а скорее брать текущий
Hog
Какая разница кнопка была синей полсеку
Hog
Вот
Ayrat
я вот вижу так match inbox.receive with | Render -> if isRendering then () // doNothing else isRendring <- true startRender()
Hog
60 раз в сек посылать мессаж
Ayrat
ну и всё
Hog
Рендер
Hog
А по остальным тока менять стейт
Ayrat
ну и где-то там обнулять isRendering по окончанию рендеринга
Hog
Согласен