home.social

#монады — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #монады, aggregated by home.social.

  1. Безумие препроцессора: внедряем do-нотацию для монад из Haskell в C++

    Добро пожаловать в чистилище препроцессора — место, где здравый смысл уступает место макросам. Сегодня мы заставим C++ притвориться Haskell-ем и внедрим do-нотацию, за которую любой адепт «чистого языка» предаст нас анафеме. Программисты на C++ делятся на два типа: те, кто боится препроцессора, и те, кто познал сие древнее чудо с сишных времён. Сегодня мы перейдем черту. Функциональное программирование манит своими абстракциями, но когда дело доходит до цепочек вычислений в монадах, C++ встречает нас бесконечными лямбдами и вложенностью, от которой рябит в глазах. В Haskell эта проблема решена элегантным do-синтаксисом. А что, если я скажу, что мы можем получить то же самое в C++, используя лишь тёмную магию макросов, простые шаблоны и полное пренебрежение здравым смыслом? Приготовьтесь: мы будем дорабатывать парсер и превращать ваш код в нечто, что заставит коллег вызвать экзорциста. Это история о том, как затащить чистую красоту монад в суровый мир C++. Запустить конвейер безумия

    habr.com/ru/companies/timeweb/

    #C++ #монады #haskell #doнотация #ненормальное_программирование #функциональное_программирование #препроцессор #макросы #timeweb_статьи

  2. Монады на Java

    Здравствуйте, меня зовут tmaxx, и я алкоголик понял что такое монады. И, естественно, рассказываю об этом всем вокруг, в том числе и вам. Конечно, это Далеко Не Первая Статья О Монадах на Хабре, но ещё один альтернативный взгляд на проблему, думаю, не помешает. «Монада», как известно, это « моноид в моноидальной категории эндофункторов », что дает примерно ноль информации несведущему человеку. В программировании, можно попробовать определить монаду как «штуку, реализующую вот такие методы»: (>>=) :: forall a b. m a -> (a -> m b) -> m b return :: a -> m a Не понятно на Хаскеле? Вот примерный эквивалент на Java: <A, B> Monad<B> bind(Monad<A> ma, Function<A, Monad<B>> famb);
    <A> Monad<A> ret(A a); Все равно остались вопросы? Почему именно такая сигнатура? Что в ней такого особенного, что она используется абсолютно во всех реальных программах написанных на функциональных языках? Попробуем разобраться.

    habr.com/ru/articles/981318/

    #Java #Монады #функциональное_программирование

  3. Изящные монады точек эллиптической кривой

    Перечитал давний доклад академика Арнольда В.И. о сложности последовательностей нулей и единиц, в которй он использует монады для определения сложности. Доклад в двух вариантах, с цветными картинками и академик тут очень красиво и подробно рассказывает, почему одна последовательность сложнее другой и как это видно и строгий вариант "Доклад в Московском математическом обществе" Вот тут можно прочитать и посмотреть, советую elementy.ru/nauchno-populyarna Там много интересного, но запомнились монады, как инструмент, весьма наглядный, для демонстрации связей и путей от сложного к простому нулю. Если кратно, то монады это простое отображение множества на себя, т.е. каждый элемент множества отображается на элемент того же множества. Вот и захотелось глянуть на монады точек эллиптической кривой над конечным полем.

    habr.com/ru/articles/931326/

    #монады #эллиптические_кривые

  4. Обобщённые типы. Часть 3/3. Применение контейнерных типов

    В последней третьей части обзора продемонстрировано, как на основе обобщённых типов-контейнеров реализуются различные ФП-техники “чистого” построения “эффективных” программ. В заключении будет отмечена роль теории категорий в обосновании важности абстракций, построенных над обобщёнными типами. Читать третью часть обзора

    habr.com/ru/articles/807495/

    #scala #функциональное_программирование #теория_типов #обобщенные_типы #монады #теория_категорий

  5. Монады как строительные блоки функционального Java

    Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.

    habr.com/ru/companies/otus/art

    #java #монады #функциональное_программирования #ФП

  6. Монады как строительные блоки функционального Java

    Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.

    habr.com/ru/companies/otus/art

    #java #монады #функциональное_программирования #ФП

  7. Монады как строительные блоки функционального Java

    Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.

    habr.com/ru/companies/otus/art

    #java #монады #функциональное_программирования #ФП

  8. Полезные материалы для С++ разработчика: о новом стандарте, висячих ссылках и технических собеседованиях

    Привет, Хабр! Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке? — Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илья Шишкову важны софткиллы. — Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего программиста, который опробовал новый стандарт на реальных проектах. — Дюжина примеров, когда механизм lifetime extension не работает, и ответ на вопросы, что делать в таких ситуациях и как избежать последствий — ненавистных висячих ссылок.

    habr.com/ru/companies/yadro/ar

    #c++ #c++23 #монады #митап #технические_секции #алгоритмы #leetcode #висячие_ссылки #собеседования