home.social

#functional_programming — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #functional_programming, aggregated by home.social.

  1. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  2. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  3. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  4. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  5. 10 причин попробовать Effect TS/Основы Effect TS

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

    habr.com/ru/articles/1009458/

    #Effect #Effect_TS #TypeScript #functional_programming #функциональное_программирование #dependency_injection #AI

  6. 10 причин попробовать Effect TS/Основы Effect TS

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

    habr.com/ru/articles/1009458/

    #Effect #Effect_TS #TypeScript #functional_programming #функциональное_программирование #dependency_injection #AI

  7. 10 причин попробовать Effect TS/Основы Effect TS

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

    habr.com/ru/articles/1009458/

    #Effect #Effect_TS #TypeScript #functional_programming #функциональное_программирование #dependency_injection #AI

  8. 10 причин попробовать Effect TS/Основы Effect TS

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

    habr.com/ru/articles/1009458/

    #Effect #Effect_TS #TypeScript #functional_programming #функциональное_программирование #dependency_injection #AI

  9. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  10. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  11. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  12. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  13. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  14. 🚀 Higher-Kinded-J v0.1.7 is LIVE!

    We've packed this release with ergonomic features for more expressive & robust Java:

    ✨ Smarter Optics: @GenerateLenses now auto-creates with* methods for easy immutable updates on your records.
    🎯 Targeted Traversals: New Traversals.forMap(key) plus modify() & getAll() for precise map value handling.
    ✅ Powerful Error Accumulation: Validated is now an Applicative, using Semigroup to beautifully accumulate errors.
    🧮 Deeper Foundations: New Semigroup, Monoid, & Foldable interfaces bring category theory power to Java.
    ↔️ Enhanced Type Flexibility: Wildcards (? super, ? extends) improve compatibility for Functor, Applicative, Monad.

    All documented in the updated hkj-book!

    Explore more: higher-kinded-j.github.io/

    #Java #functional_programming #HigherKindedTypes #Optics

  15. 🚀 Higher-Kinded-J v0.1.7 is LIVE!

    We've packed this release with ergonomic features for more expressive & robust Java:

    ✨ Smarter Optics: @GenerateLenses now auto-creates with* methods for easy immutable updates on your records.
    🎯 Targeted Traversals: New Traversals.forMap(key) plus modify() & getAll() for precise map value handling.
    ✅ Powerful Error Accumulation: Validated is now an Applicative, using Semigroup to beautifully accumulate errors.
    🧮 Deeper Foundations: New Semigroup, Monoid, & Foldable interfaces bring category theory power to Java.
    ↔️ Enhanced Type Flexibility: Wildcards (? super, ? extends) improve compatibility for Functor, Applicative, Monad.

    All documented in the updated hkj-book!

    Explore more: higher-kinded-j.github.io/

  16. Преодоление сложности в самом сердце Анемичной Модели

    Доброго времени суток, Хабр! Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

    habr.com/ru/articles/917012/

    #ddd #software_design #anemic_model #refactoring #architecture #java #oop #web_development #domain_driven_design #functional_programming

  17. Преодоление сложности в самом сердце Анемичной Модели

    Доброго времени суток, Хабр! Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

    habr.com/ru/articles/917012/

    #ddd #software_design #anemic_model #refactoring #architecture #java #oop #web_development #domain_driven_design #functional_programming

  18. Преодоление сложности в самом сердце Анемичной Модели

    Доброго времени суток, Хабр! Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

    habr.com/ru/articles/917012/

    #ddd #software_design #anemic_model #refactoring #architecture #java #oop #web_development #domain_driven_design #functional_programming

  19. Преодоление сложности в самом сердце Анемичной Модели

    Доброго времени суток, Хабр! Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

    habr.com/ru/articles/917012/

    #ddd #software_design #anemic_model #refactoring #architecture #java #oop #web_development #domain_driven_design #functional_programming

  20. 🚀 just uploaded (link in reply): "Folding Cheat Sheet #9 List Unfolding - unfold as the Computational Dual of fold, and how unfold relates to iterate"

  21. 🚀 just uploaded (link in reply): "Folding Cheat Sheet #9 List Unfolding - unfold as the Computational Dual of fold, and how unfold relates to iterate" #scala #haskell #folding #unfolding #iterate #functional_programming

  22. 🚀 just uploaded (link in reply): "Folding Cheat Sheet #9 List Unfolding - unfold as the Computational Dual of fold, and how unfold relates to iterate" #scala #haskell #folding #unfolding #iterate #functional_programming

  23. 🚀 just uploaded (link in reply): "Folding Cheat Sheet #9 List Unfolding - unfold as the Computational Dual of fold, and how unfold relates to iterate" #scala #haskell #folding #unfolding #iterate #functional_programming