Алгебраические эффекты на Javascript

В этой статье я хотел рассказать об интересном подходе к построению программ, описанному в книге Sandy Maguire, Algebra-Driven Design. Подход позволяет строить программы на основе абстрактных математических структур и законов. Это позволяет разработать обобщенные подходы к их созданию и тестированию. Но потом я понял, что в этом мало смысла без объяснения, почему такой подход в принципе имеет право на существование. В книге для примеров используется Haskell - ленивый, чистый функциональный язык, имеющий крайне мало отношения к языкам, которые широко применяются на практике. Распространено мнение, что приемы, используемые в Haskell, существуют в основном для преодоления его же недостатков и в других языках не нужны. Например, про монады пишут, что это оторванная от реальной жизни абстракция, которую не встретить в повседневной работе. Нет ничего более далекого от истины. Монады - это не костыль, а мощная абстракция, которая позволяет выявить связь между такими непохожими языками, как C и Haskell, и свести к одному знаменателю такие далекие друг от друга концепции как асинхронные функции и глобальные переменные. Так что в этой статье я ограничусь описанием алгебраического программирования на примере монады. Я по шагам пройду путь от классической, сравнительно бесполезной в динамически типизированных языках монады, до Freer монады, которая обладает настолько удивительными свойствами, что может найти применение даже в императивном языке. Вы убедитесь, что алгебраический подход применим в обычных языках и дает превосходные результаты.

https://habr.com/ru/articles/598203/

#monad #монада #free_monad #algebraic_effects

Алгебраические эффекты на Javascript

Первоначально в этой статье я хотел рассказать об интересном подходе к построению программ, описанному в книге Sandy Maguire, Algebra-Driven Design. Подход позволяет строить программы на основе...

Хабр

@philip_schwarz

WOW, I didn't know about fpilluminated and the format works exceptionally well for me! This is extremely didactic thank you for building these resources!

#scala #direct_style #fp #functional_programming #algebraic_effects #effect #side_effect #context_function #effect_system

🚀🙂 just uploaded to https://fpilluminated.com : Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid

Direct link: https://fpilluminated.com/deck/217

Based on the following great blog posts:

Direct-style Effects Explained https://inner-product.com/posts/direct-style-effects/

Context is King https://blog.softwaremill.com/context-is-king-20f533474cb3

#scala #direct_style #fp #functional_programming #algebraic_effects #effect #side_effect #context_function #effect_system

Home Page