Несколько месяцев назад я зачем-то полез изучать теорию категорий. Причины были примерно те же, по которым нормальные люди иногда решают разобраться в квантовой механике по роликам на YouTube: звучит умно, выглядит загадочно, а главное – можно потом с важным лицом употреблять слово «эндофунктор» в компании людей, которые не могут проверить, несёшь ты ахинею или нет. В моём случае ситуацию усугубляла любовь к функциональному программированию, поэтому рано или поздно столкновение с теоркатом было неизбежно.
Рубрика «haskell»
Я несколько месяцев изучал теорию категорий. Вот зачем она оказалась нужна мне как программисту
2026-10-09 в 8:10, admin, рубрики: category theory, haskell, javascript, монады, опыт, теория категорий, функциональное программированиеХватит винить кривые руки. Твой язык программирования энергетически тебе не подходит
2026-04-01 в 6:05, admin, рубрики: c++, Cpp, haskell, java, javascript, php, python, астрология, знаки зодиакаПривет!
На днях HR-отдел отклонил мое резюме на позицию джуна. Вместо фидбека я получил ответ «В нашей команде слишком много козерогов, и нашему тарологу не понравился ваш Сатурн». Сначала я хотел возмутиться, но потом подумал. Может звезды не врут? Возможно наш звездный язык программирования определяется в зависимости от расположения планет во время первого запуска IDE.
Я провел фундаментальное исследование, проанализировал натальные карты Гвидо ван Россума, Страуструпа и прочих, и составил первый в мире точный гороскоп языков программирования.
И результат меня поразил.
♈ Овен (21 марта — 19 апреля): C++
Funxy — гибридный язык программирования со статической типизацией
2025-12-08 в 20:12, admin, рубрики: bitstring, haskell, http, matching, monad, TCO, разработка языков программирования, рекурсия, скриптовый язык, функциональное программированиеFunxy (фанкси, fun x(y)) — гибридный язык программирования со статической типизацией, pattern matching и удобной работой с бинарными данными.
Гибридный означает сочетание императивного и функционального стилей. Можно писать привычные конструкции if/for, а можно — map/filter/match с pipes и композицией. Зависит от задачи и ваших предпочтений — стили спокойно можно смешивать.
Статическая типизация с выводом типов — компилятор проверяет типы до выполнения, но в большинстве случаев их не нужно указывать явно:
Читать полностью »
Град на холме и Китеж-град как философия языков программирования
2025-09-06 в 14:26, admin, рубрики: deepseek, haskell, python, Рефал, философияВ преддверии Дня программиста, легкое чтиво, от Deepseek.
Запрос - Что можно считать градом на холме или Китеж-градом в плане языка программирования?
Обдумывание
Хм, пользователь задаёт довольно метафоричный вопрос о программировании, связывая библейский "град на холме" и русский мифический Китеж. Нужно объяснить это через призму языков программирования, но без излишней техничности, сохраняя поэтичность.
Исчисление геометрии Часть 1. Алгебры Клиффорда
2025-06-05 в 6:08, admin, рубрики: haskell, алгебра, алгебра клиффорда, геометрическая алгебра, геометрияВ цикле статей «Изобретаем числа» мы знакомились с разнообразной арифметической экзотикой: двойными и дуальными числами, числами Гаусса и Эйзенштейна. В перечисленных числовых системах поле вещественных чисел расширяется дополнительными невещественными элементами, которые я позволил себе неформально называть «квадратными корнями» из единицы, минус единицы или нуля, поскольку их квадраты равны ±1 или 0. Можно определить формальную классификациюЧитать полностью »
Функциональное программирование и программирование на Haskell
2024-12-17 в 6:15, admin, рубрики: haskellКонцепция функционального программирования (ФП) базируется на математических функциях. Такой подход принципиально отличается от императивного, в котором ключевыми элементами выступают изменения состояния кода и последовательное выполнение команд. В ФП основное внимание уделено вычислению тех или иных значений через функции.
В функциональных языках код проще тестировать, корректировать и поддерживать в рабочем состоянии. Функции в ФП — это объекты первого класса, которые передаются как аргументы, могут быть возвращены из других функций и храниться в переменных.
Нет, в Haskell неудобно обрабатывать ошибки (если не пользоваться эффектами)
2023-01-09 в 14:51, admin, рубрики: exceptions, haskellЕсли вы когда-нибудь читали агитации, призывающие к изучению Haskell, наверняка вас убеждали, что в нём ну очень удобно обрабатывать ошибки, ведь там есть Монада Either.
Однако, чем дальше вы изучаете Haskell (если, конечно, изучаете), тем больше понимаете, что Either неудобен примерно всегда, и использовать его вы не станете. А именно потому, что он не допускает побочных эффектов (например, IO).
Хотя, например, в Rust, такой проблемы нет, однако и там сообщество пришло к выводу, что тамошний Result из коробки тоже непригоден к использованию.
Далее, скорее всего, вы узнаете про ExceptT/MonadErrorЧитать полностью »
Применение обобщённой свёртки для обработки синтаксических деревьев
2022-05-28 в 17:06, admin, рубрики: haskell, recursion schemes, синтаксические деревья, схемы рекурсии, функциональное программированиеПривет! В рамках данной статьи мы создадим интерпретатор для простого языка программирования с использованием обобщённой свёртки. Далее следует небольшое введение. Для тех, кто уже знаком с типом Fix - фиксированной точкой для функторов, оставляю ссылку на основную часть статьи.
Правая свёртка для списков
Свёртка — операция, которая разрушает исходную структуру типа и возвращает одно значение. Например, преобразует список чисел в их сумму, при этом сама структура списка как бы разрушается. Рассмотрим правую свёртку для списка:
foldr :: (a -> b -> b) -> b -> [a] ->Читать полностью »
«Невозможный» параллельный алгоритм неотрицательной суммы
2022-01-02 в 7:02, admin, рубрики: forkjoin, haskell, java, java streams, MapReduce, sql, sum, ассоциативность, магия, моноид, параллельное программирование, параллельные вычисления, ПрограммированиеСумма целых чисел — что может быть проще? Сумма есть в SQL, в Java Stream API… в крайнем случае напишем сами. Как и всякая абстракция, она расходится с реальностью.
Вот счёт клиента в банке, по нему движения — положительные пополнения и отрицательные списания — в сумме дают текущий баланс. Так сумма работает в идеальном мире. А в реальности при большом минусе банк с отсрочкой, но предпримет нетривиальные действия вплоть до обращения в суд, чтобы закрыть финансовую брешь.
static long usualSum(LongStream changes) {
return changes.reduce(0, (a, b) -> a + b);
}
Какой вклад внесло функциональное программирование в современные языки?
2021-11-15 в 15:27, admin, рубрики: functional programming, haskell, programming, Блог компании Typeable, парадигмы, парадигмы программирования, Программирование, ФП, функциональное программирование, языки программирования, ЯПСовременные языки программирования обладают большим набором разнообразных средств и удобных фишек, что позволяет писать совершенно разный код на одном и том же языке для одной и той же задачи.
Парадигма программирования — это в первую очередь стиль мышления: то, как программист думает о представлении данных и процессе их обработки. Другими словами, парадигма живёт в голове программиста, а не является свойством языка. Разные языки могут в той или иной степени поддерживать определённую парадигму. Если сейчас зайти на Википедию и начать читать про самые популярные ЯП, мы увидим, что многие из них заявлены как "мультипарадигменные": на них можно писать в разных стилях, но какие-то из них использовать будет удобнее.

В своей недавней статье мы рассказывали о практических применениях Лиспа и упомянули, что он сильно повлиял на развитие других языков программирования, но не стали вдаваться в детали. Пришло время более подробно раскрыть эту тему и разобраться, какой вклад функциональное программирование в целом (не только Лисп!) внесло в развитие других языков. Поскольку мы используем Haskell как основной язык разработки, и наша команда разработчиков состоит из ФП-энтузиастов, мы не смогли пройти мимо такой темы.
В этом посте рассмотрим несколько механизмов, которые либо зародились в ФП-языках, либо нашли в них наибольшее применение и были ими популяризованы, и в итоге появились в языках, изначально не функциональных.Читать полностью »
