#монады — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #монады, aggregated by home.social.
-
Безумие препроцессора: внедряем do-нотацию для монад из Haskell в C++
Добро пожаловать в чистилище препроцессора — место, где здравый смысл уступает место макросам. Сегодня мы заставим C++ притвориться Haskell-ем и внедрим do-нотацию, за которую любой адепт «чистого языка» предаст нас анафеме. Программисты на C++ делятся на два типа: те, кто боится препроцессора, и те, кто познал сие древнее чудо с сишных времён. Сегодня мы перейдем черту. Функциональное программирование манит своими абстракциями, но когда дело доходит до цепочек вычислений в монадах, C++ встречает нас бесконечными лямбдами и вложенностью, от которой рябит в глазах. В Haskell эта проблема решена элегантным do-синтаксисом. А что, если я скажу, что мы можем получить то же самое в C++, используя лишь тёмную магию макросов, простые шаблоны и полное пренебрежение здравым смыслом? Приготовьтесь: мы будем дорабатывать парсер и превращать ваш код в нечто, что заставит коллег вызвать экзорциста. Это история о том, как затащить чистую красоту монад в суровый мир C++. Запустить конвейер безумия
https://habr.com/ru/companies/timeweb/articles/1003272/
#C++ #монады #haskell #doнотация #ненормальное_программирование #функциональное_программирование #препроцессор #макросы #timeweb_статьи
-
Монады на 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); Все равно остались вопросы? Почему именно такая сигнатура? Что в ней такого особенного, что она используется абсолютно во всех реальных программах написанных на функциональных языках? Попробуем разобраться. -
Изящные монады точек эллиптической кривой
Перечитал давний доклад академика Арнольда В.И. о сложности последовательностей нулей и единиц, в которй он использует монады для определения сложности. Доклад в двух вариантах, с цветными картинками и академик тут очень красиво и подробно рассказывает, почему одна последовательность сложнее другой и как это видно и строгий вариант "Доклад в Московском математическом обществе" Вот тут можно прочитать и посмотреть, советую https://elementy.ru/nauchno-populyarnaya_biblioteka/430178/430281 Там много интересного, но запомнились монады, как инструмент, весьма наглядный, для демонстрации связей и путей от сложного к простому нулю. Если кратно, то монады это простое отображение множества на себя, т.е. каждый элемент множества отображается на элемент того же множества. Вот и захотелось глянуть на монады точек эллиптической кривой над конечным полем.
-
Обобщённые типы. Часть 3/3. Применение контейнерных типов
В последней третьей части обзора продемонстрировано, как на основе обобщённых типов-контейнеров реализуются различные ФП-техники “чистого” построения “эффективных” программ. В заключении будет отмечена роль теории категорий в обосновании важности абстракций, построенных над обобщёнными типами. Читать третью часть обзора
https://habr.com/ru/articles/807495/
#scala #функциональное_программирование #теория_типов #обобщенные_типы #монады #теория_категорий
-
Монады как строительные блоки функционального Java
Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.
-
Монады как строительные блоки функционального Java
Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.
-
Монады как строительные блоки функционального Java
Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.
-
Полезные материалы для С++ разработчика: о новом стандарте, висячих ссылках и технических собеседованиях
Привет, Хабр! Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке? — Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илья Шишкову важны софткиллы. — Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего программиста, который опробовал новый стандарт на реальных проектах. — Дюжина примеров, когда механизм lifetime extension не работает, и ответ на вопросы, что делать в таких ситуациях и как избежать последствий — ненавистных висячих ссылок.
https://habr.com/ru/companies/yadro/articles/783472/
#c++ #c++23 #монады #митап #технические_секции #алгоритмы #leetcode #висячие_ссылки #собеседования