Algebraic effects (алгебраїчні еффекти ) react, fibers, coroutines та як процює hooks та suspense

preview_player
Показать описание
Ефекти та файбери це наріжний камінь react 16+ якій дозволив імплементувати саспенси й таймслайсінг чим драматично прискорив рендерінг а головне респонс для користувача. Також хуки по факту є також алгебраїчними еффектами
Якщо все спростити до побутового рівня та ігнорувати теорію та вільні монади - то ефект є екскпшеном що не перериває виконання та вміє повертати значення в точку визова. Є нелінійні ефекти які можуть обирати куди повертатися. Такий підхід дозволяє генералізувати - синхронний асинхроний та багатопоточний код та представляти його як лінійний
Хороша стаття Абрамова на тему еффектів
Пояснення як працює useState

Відео про файбери та ефекти у react

Імплементація еффектів для js
Як бачимо обгортки та генератори виглядають не дуже елегантно тому ефекти краще використовувати коли вони вбудовані в мову
Тут нам допоможе bable одна з імплементацій нового синтаксису

Кілька мов програмування з системою типізованих еффектів

Також є цікавий пропоузал підтримати ефекти в wasm

Для фанатів теорії та чому все так працює цікаво почитати
Ну й куди без Ocaml
Рекомендации по теме
Комментарии
Автор

Десь 3 дня назад довідався, що async/await синтакс в JS реалізований з допомогою генераторів, які в свою чергу є свого роду coroutines. JS не перестає дивувати)

kovalyurii