home.social

#функциональное_программирование — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #функциональное_программирование, aggregated by home.social.

  1. Разбираем map, filter, reduce, any, all, zip и enumerate в Python

    Все мы начинали писать на Python примерно одинаково: создавали пустой список, запускали цикл for, проверяли условие через if и делали .append(). Это надежно, предсказуемо, но по мере роста кодовой базы такие конструкции начинают утомлять — мы тратим 4-5 строк на банальную трансформацию данных, которую можно уложить в одну лаконичную строку. В этой статье мы подробно разберем встроенный инструментарий Python для работы с итерируемыми объектами: map, filter, reduce, any, all, zip и enumerate.

    habr.com/ru/articles/1036696/

    #python #map #filter #reduce #функциональное_программирование #генераторы_списков #ленивые_вычисления #рефакторинг_кода

  2. [Перевод] Что такое Реактивное Программирование

    Реактивность может значительно упростить реализацию надёжных программ. Давайте рассмотрим, что нам нужно для её реализации и какие парадигмы реактивного программирования бывают… Отреагировать на статью

    habr.com/ru/articles/1033088/

    #реактивное_программирование #функциональное_программирование #объектное_программирование #процедурное_программирование

  3. Error 500? Как вместо кодов получать подробные сведения обо всех ошибках сразу

    Привет, Хабр! Меня зовут Артём Корсаков. Я пишу на Scala и руковожу группой разработчиков в компании «Криптонит» , а также веду Scalabook — русскоязычную базу знаний по Scala и функциональному программированию. В этой статье расскажу про обработку ошибок в библиотеке http4s на Scala 3. Мы разберём, как настроить декодирование запросов так, чтобы клиент получал не просто код “500” или “422” с общим сообщением, а сразу видел развёрнутый список всех проблем в запросе. Например, что логин уже занят, пароль содержит недопустимые символы, а капча не введена. Пожалуй, самая раздражающая ошибка — это получение кода “500” в ответ на запрос, который ты десять раз перепроверил, сверился с документацией и уверен на все 100%, что запрос рабочий. Даже на 110%! В такие моменты раздражённо думаешь: “Что же этому серверу надо? Я же чётко сформулировал запрос! Ответить на этот вопрос порой сложно. Например, я хочу зарегистрироваться на сайте, ввожу логин/пароль и получаю сообщение "Internal Server Error". Первое желание – тут же покинуть сайт и поискать более дружелюбный. Давайте подумаем, как можно сделать сообщение об ошибке более информативным . Для этого будем использовать Scala 3, уточняющие типы и http4s . Представим, что мы создаём API сервиса авторизации, который (помимо прочего) должен регистрировать новых пользователей. Для начала определим структуру данных для создания нового пользователя.

    habr.com/ru/companies/kryptoni

    #функциональное_программирование #scala #http4s #обработка_ошибок #декодирование_запросов #backend

  4. Error 500? Как вместо кодов получать подробные сведения обо всех ошибках сразу

    Привет, Хабр! Меня зовут Артём Корсаков. Я пишу на Scala и руковожу группой разработчиков в компании «Криптонит» , а также веду Scalabook — русскоязычную базу знаний по Scala и функциональному программированию. В этой статье расскажу про обработку ошибок в библиотеке http4s на Scala 3. Мы разберём, как настроить декодирование запросов так, чтобы клиент получал не просто код “500” или “422” с общим сообщением, а сразу видел развёрнутый список всех проблем в запросе. Например, что логин уже занят, пароль содержит недопустимые символы, а капча не введена. Пожалуй, самая раздражающая ошибка — это получение кода “500” в ответ на запрос, который ты десять раз перепроверил, сверился с документацией и уверен на все 100%, что запрос рабочий. Даже на 110%! В такие моменты раздражённо думаешь: “Что же этому серверу надо? Я же чётко сформулировал запрос! Ответить на этот вопрос порой сложно. Например, я хочу зарегистрироваться на сайте, ввожу логин/пароль и получаю сообщение "Internal Server Error". Первое желание – тут же покинуть сайт и поискать более дружелюбный. Давайте подумаем, как можно сделать сообщение об ошибке более информативным . Для этого будем использовать Scala 3, уточняющие типы и http4s . Представим, что мы создаём API сервиса авторизации, который (помимо прочего) должен регистрировать новых пользователей. Для начала определим структуру данных для создания нового пользователя.

    habr.com/ru/companies/kryptoni

    #функциональное_программирование #scala #http4s #обработка_ошибок #декодирование_запросов #backend

  5. Error 500? Как вместо кодов получать подробные сведения обо всех ошибках сразу

    Привет, Хабр! Меня зовут Артём Корсаков. Я пишу на Scala и руковожу группой разработчиков в компании «Криптонит» , а также веду Scalabook — русскоязычную базу знаний по Scala и функциональному программированию. В этой статье расскажу про обработку ошибок в библиотеке http4s на Scala 3. Мы разберём, как настроить декодирование запросов так, чтобы клиент получал не просто код “500” или “422” с общим сообщением, а сразу видел развёрнутый список всех проблем в запросе. Например, что логин уже занят, пароль содержит недопустимые символы, а капча не введена. Пожалуй, самая раздражающая ошибка — это получение кода “500” в ответ на запрос, который ты десять раз перепроверил, сверился с документацией и уверен на все 100%, что запрос рабочий. Даже на 110%! В такие моменты раздражённо думаешь: “Что же этому серверу надо? Я же чётко сформулировал запрос! Ответить на этот вопрос порой сложно. Например, я хочу зарегистрироваться на сайте, ввожу логин/пароль и получаю сообщение "Internal Server Error". Первое желание – тут же покинуть сайт и поискать более дружелюбный. Давайте подумаем, как можно сделать сообщение об ошибке более информативным . Для этого будем использовать Scala 3, уточняющие типы и http4s . Представим, что мы создаём API сервиса авторизации, который (помимо прочего) должен регистрировать новых пользователей. Для начала определим структуру данных для создания нового пользователя.

    habr.com/ru/companies/kryptoni

    #функциональное_программирование #scala #http4s #обработка_ошибок #декодирование_запросов #backend

  6. Error 500? Как вместо кодов получать подробные сведения обо всех ошибках сразу

    Привет, Хабр! Меня зовут Артём Корсаков. Я пишу на Scala и руковожу группой разработчиков в компании «Криптонит» , а также веду Scalabook — русскоязычную базу знаний по Scala и функциональному программированию. В этой статье расскажу про обработку ошибок в библиотеке http4s на Scala 3. Мы разберём, как настроить декодирование запросов так, чтобы клиент получал не просто код “500” или “422” с общим сообщением, а сразу видел развёрнутый список всех проблем в запросе. Например, что логин уже занят, пароль содержит недопустимые символы, а капча не введена. Пожалуй, самая раздражающая ошибка — это получение кода “500” в ответ на запрос, который ты десять раз перепроверил, сверился с документацией и уверен на все 100%, что запрос рабочий. Даже на 110%! В такие моменты раздражённо думаешь: “Что же этому серверу надо? Я же чётко сформулировал запрос! Ответить на этот вопрос порой сложно. Например, я хочу зарегистрироваться на сайте, ввожу логин/пароль и получаю сообщение "Internal Server Error". Первое желание – тут же покинуть сайт и поискать более дружелюбный. Давайте подумаем, как можно сделать сообщение об ошибке более информативным . Для этого будем использовать Scala 3, уточняющие типы и http4s . Представим, что мы создаём API сервиса авторизации, который (помимо прочего) должен регистрировать новых пользователей. Для начала определим структуру данных для создания нового пользователя.

    habr.com/ru/companies/kryptoni

    #функциональное_программирование #scala #http4s #обработка_ошибок #декодирование_запросов #backend

  7. Объяснение лямбда исчисления через Python

    Реализация ключевых конструкций лямбда‑исчисления на Python и объяснение их работы. Подойдёт даже тем, кто не очень знаком с Python. Если хотите понять, как из одних лишь функций строятся булевы, списки и числа и, быть может, попробовать дойти до реализации некоторых алгоритмов самостоятельно — добро пожаловать под кат.

    habr.com/ru/companies/timeweb/

    #лямбда_исчисление #python #функциональное_программирование #комбинаторы #рекурсия #аппликация #абстракция #редукция #timeweb_статьи

  8. Объяснение лямбда исчисления через Python

    Реализация ключевых конструкций лямбда‑исчисления на Python и объяснение их работы. Подойдёт даже тем, кто не очень знаком с Python. Если хотите понять, как из одних лишь функций строятся булевы, списки и числа и, быть может, попробовать дойти до реализации некоторых алгоритмов самостоятельно — добро пожаловать под кат.

    habr.com/ru/companies/timeweb/

    #лямбда_исчисление #python #функциональное_программирование #комбинаторы #рекурсия #аппликация #абстракция #редукция #timeweb_статьи

  9. Объяснение лямбда исчисления через Python

    Реализация ключевых конструкций лямбда‑исчисления на Python и объяснение их работы. Подойдёт даже тем, кто не очень знаком с Python. Если хотите понять, как из одних лишь функций строятся булевы, списки и числа и, быть может, попробовать дойти до реализации некоторых алгоритмов самостоятельно — добро пожаловать под кат.

    habr.com/ru/companies/timeweb/

    #лямбда_исчисление #python #функциональное_программирование #комбинаторы #рекурсия #аппликация #абстракция #редукция #timeweb_статьи

  10. Объяснение лямбда исчисления через Python

    Реализация ключевых конструкций лямбда‑исчисления на Python и объяснение их работы. Подойдёт даже тем, кто не очень знаком с Python. Если хотите понять, как из одних лишь функций строятся булевы, списки и числа и, быть может, попробовать дойти до реализации некоторых алгоритмов самостоятельно — добро пожаловать под кат.

    habr.com/ru/companies/timeweb/

    #лямбда_исчисление #python #функциональное_программирование #комбинаторы #рекурсия #аппликация #абстракция #редукция #timeweb_статьи

  11. Почему я перестал писать bash-скрипты и написал свой язык

    Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?

    habr.com/ru/articles/1020728/

    #скриптовый_язык #bash #функциональное_программирование #REPL #автоматизация #open_source #Rust #Lisp #Haskell

  12. Почему я перестал писать bash-скрипты и написал свой язык

    Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?

    habr.com/ru/articles/1020728/

    #скриптовый_язык #bash #функциональное_программирование #REPL #автоматизация #open_source #Rust #Lisp #Haskell

  13. Почему я перестал писать bash-скрипты и написал свой язык

    Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?

    habr.com/ru/articles/1020728/

    #скриптовый_язык #bash #функциональное_программирование #REPL #автоматизация #open_source #Rust #Lisp #Haskell

  14. Почему я перестал писать bash-скрипты и написал свой язык

    Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?

    habr.com/ru/articles/1020728/

    #скриптовый_язык #bash #функциональное_программирование #REPL #автоматизация #open_source #Rust #Lisp #Haskell

  15. Функциональный Rust. Глава 0: Зачем нужно ФП?

    TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

    habr.com/ru/articles/1018790/

    #фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма

  16. Функциональный Rust. Глава 0: Зачем нужно ФП?

    TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

    habr.com/ru/articles/1018790/

    #фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма

  17. Функциональный Rust. Глава 0: Зачем нужно ФП?

    TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

    habr.com/ru/articles/1018790/

    #фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма

  18. Функциональный Rust. Глава 0: Зачем нужно ФП?

    TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

    habr.com/ru/articles/1018790/

    #фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма

  19. Лингвистическая относительность в программировании — как наше мышление определяет выбор языка и стиль кодирования

    Поводом к написанию предыдущей статьи «Шаблоны и принципы деления кода на классы» послужил случай с начинающим программистом, который обратился ко мне за помощью. Однако та история получила неожиданное продолжение, ставшее, в свою очередь, одной из предпосылок уже для этой статьи. И видимо, волей судьбы или просто по забавному стечению обстоятельств, эта история оказалась напрямую связана с комментариями к первой статье, где в ходе жаркого диалога я затронул тему мышления и восприятия кода разработчиком. Так родилась идея поделиться накопившимися за 10-летний стаж наблюдениями и плодами размышлений: - Как стиль написания кода отражает образ мышления разработчика. - Как разработчики воспринимают код программы. - Почему один язык программирования, что называется, «заходит», а другой - нет.

    habr.com/ru/companies/cinimex/

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

  20. Парсер‑комбинаторы «с нуля»

    Привет, Хабр! Парсер‑комбинаторы и синтаксический анализ в целом — очень интересные темы. Однако материалов со сравнительно низким порогом входа маловато, а в существующих статьях на читателя сразу обрушивается поток терминов и формальностей. Эту статью я позиционирую как введение в парсер‑комбинаторы «для чайников» (или «для самых маленьких» — как вам больше нравится). Цель: попытаться рассказать простым языком и с примерами так, чтобы Вы могли после прочтения написать свой парсер без какого‑либо предварительного опыта и знаний в области синтаксического анализа. Приятного чтения!

    habr.com/ru/articles/1016632/

    #парсеркомбинаторы #парсер #синтаксический_анализ #функциональное_программирование #dsl #разбор_текста #формальные_языки

  21. Самый популярный язык программирования — Excel. И он Тьюринг-полный

    Недавно на созвоне финансовый аналитик показывал мне свою Excel-модель. Двенадцать листов, формулы ссылаются друг на друга через три уровня вложенности, именованные диапазоны вместо переменных, и INDIRECT, который динамически собирает адреса ячеек из строк. Я смотрел на это и думал: чувак, ты же написал компилятор. Ты просто не знаешь об этом. 750 миллионов человек используют Excel. Для сравнения — на Python пишут примерно 15 миллионов, на JavaScript — около 17. Excel обгоняет их всех вместе взятых раз в двадцать. И вот что забавно: подавляющее большинство этих людей искренне считают, что они «просто работают с таблицами». Заполняют ячейки. Делают отчёты. Нет, они программируют.

    habr.com/ru/articles/1011748/

    #Excel #Тьюрингполнота #функциональное_программирование #LAMBDA #Rule_110 #спредшиты #Microsoft_Excel #клеточные_автоматы #финансовое_моделирование #spreadsheet_errors

  22. Самый популярный язык программирования — Excel. И он Тьюринг-полный

    Недавно на созвоне финансовый аналитик показывал мне свою Excel-модель. Двенадцать листов, формулы ссылаются друг на друга через три уровня вложенности, именованные диапазоны вместо переменных, и INDIRECT, который динамически собирает адреса ячеек из строк. Я смотрел на это и думал: чувак, ты же написал компилятор. Ты просто не знаешь об этом. 750 миллионов человек используют Excel. Для сравнения — на Python пишут примерно 15 миллионов, на JavaScript — около 17. Excel обгоняет их всех вместе взятых раз в двадцать. И вот что забавно: подавляющее большинство этих людей искренне считают, что они «просто работают с таблицами». Заполняют ячейки. Делают отчёты. Нет, они программируют.

    habr.com/ru/articles/1011748/

    #Excel #Тьюрингполнота #функциональное_программирование #LAMBDA #Rule_110 #спредшиты #Microsoft_Excel #клеточные_автоматы #финансовое_моделирование #spreadsheet_errors

  23. Самый популярный язык программирования — Excel. И он Тьюринг-полный

    Недавно на созвоне финансовый аналитик показывал мне свою Excel-модель. Двенадцать листов, формулы ссылаются друг на друга через три уровня вложенности, именованные диапазоны вместо переменных, и INDIRECT, который динамически собирает адреса ячеек из строк. Я смотрел на это и думал: чувак, ты же написал компилятор. Ты просто не знаешь об этом. 750 миллионов человек используют Excel. Для сравнения — на Python пишут примерно 15 миллионов, на JavaScript — около 17. Excel обгоняет их всех вместе взятых раз в двадцать. И вот что забавно: подавляющее большинство этих людей искренне считают, что они «просто работают с таблицами». Заполняют ячейки. Делают отчёты. Нет, они программируют.

    habr.com/ru/articles/1011748/

    #Excel #Тьюрингполнота #функциональное_программирование #LAMBDA #Rule_110 #спредшиты #Microsoft_Excel #клеточные_автоматы #финансовое_моделирование #spreadsheet_errors

  24. Самый популярный язык программирования — Excel. И он Тьюринг-полный

    Недавно на созвоне финансовый аналитик показывал мне свою Excel-модель. Двенадцать листов, формулы ссылаются друг на друга через три уровня вложенности, именованные диапазоны вместо переменных, и INDIRECT, который динамически собирает адреса ячеек из строк. Я смотрел на это и думал: чувак, ты же написал компилятор. Ты просто не знаешь об этом. 750 миллионов человек используют Excel. Для сравнения — на Python пишут примерно 15 миллионов, на JavaScript — около 17. Excel обгоняет их всех вместе взятых раз в двадцать. И вот что забавно: подавляющее большинство этих людей искренне считают, что они «просто работают с таблицами». Заполняют ячейки. Делают отчёты. Нет, они программируют.

    habr.com/ru/articles/1011748/

    #Excel #Тьюрингполнота #функциональное_программирование #LAMBDA #Rule_110 #спредшиты #Microsoft_Excel #клеточные_автоматы #финансовое_моделирование #spreadsheet_errors

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

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

    habr.com/ru/companies/timeweb/

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

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

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

    habr.com/ru/articles/1009458/

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

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

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

    habr.com/ru/articles/1009458/

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

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

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

    habr.com/ru/articles/1009458/

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

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

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

    habr.com/ru/articles/1009458/

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

  30. Анонимные функции и функциональные инструменты в Python: От lambda до встроенных функций

    В мире Python есть особый вид функций — невидимки. У них нет имени, документ-строки и даже нормального тела. Они живут одну строку и умирают, сделав свое дело. Это лямбда-функции. Многие новички считают их бесполезной игрушкой или, наоборот, пытаются запихнуть всю логику в одну лямбду, превращая код в нечитаемое месиво. В этой статье мы разберемся, где проходит эта грань. Мы не просто выучим синтаксис lambda x: x , мы поймем, как они устроены внутри, как их использовать с инструментами вроде map , filter , sorted , и главное — когда от их использования стоит категорически отказаться.

    habr.com/ru/articles/1006454/

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

  31. Анонимные функции и функциональные инструменты в Python: От lambda до встроенных функций

    В мире Python есть особый вид функций — невидимки. У них нет имени, документ-строки и даже нормального тела. Они живут одну строку и умирают, сделав свое дело. Это лямбда-функции. Многие новички считают их бесполезной игрушкой или, наоборот, пытаются запихнуть всю логику в одну лямбду, превращая код в нечитаемое месиво. В этой статье мы разберемся, где проходит эта грань. Мы не просто выучим синтаксис lambda x: x , мы поймем, как они устроены внутри, как их использовать с инструментами вроде map , filter , sorted , и главное — когда от их использования стоит категорически отказаться.

    habr.com/ru/articles/1006454/

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

  32. Анонимные функции и функциональные инструменты в Python: От lambda до встроенных функций

    В мире Python есть особый вид функций — невидимки. У них нет имени, документ-строки и даже нормального тела. Они живут одну строку и умирают, сделав свое дело. Это лямбда-функции. Многие новички считают их бесполезной игрушкой или, наоборот, пытаются запихнуть всю логику в одну лямбду, превращая код в нечитаемое месиво. В этой статье мы разберемся, где проходит эта грань. Мы не просто выучим синтаксис lambda x: x , мы поймем, как они устроены внутри, как их использовать с инструментами вроде map , filter , sorted , и главное — когда от их использования стоит категорически отказаться.

    habr.com/ru/articles/1006454/

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

  33. Анонимные функции и функциональные инструменты в Python: От lambda до встроенных функций

    В мире Python есть особый вид функций — невидимки. У них нет имени, документ-строки и даже нормального тела. Они живут одну строку и умирают, сделав свое дело. Это лямбда-функции. Многие новички считают их бесполезной игрушкой или, наоборот, пытаются запихнуть всю логику в одну лямбду, превращая код в нечитаемое месиво. В этой статье мы разберемся, где проходит эта грань. Мы не просто выучим синтаксис lambda x: x , мы поймем, как они устроены внутри, как их использовать с инструментами вроде map , filter , sorted , и главное — когда от их использования стоит категорически отказаться.

    habr.com/ru/articles/1006454/

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

  34. Funxy два месяца спустя: работа над ошибками, VM и прагматизм

    Два месяца назад я писал на Хабр о первом релизе Funxy — гибридного языка программирования. Тогда это был эксперимент по созданию своего языка с выводом типов, императивного, с функциональными возможностями. С тех пор вышло несколько релизов. Мы исправили много ошибок, переписали рантайм и добавили недостающие инструменты. Хочу рассказать, что изменилось. Стабильность: десятки багфиксов — падения на валидном коде, рекурсия, edge-кейсы VM Рантайм: tree-walk интерпретатор → стековая VM (быстрее, легче по памяти) Язык: const , return , лямбды ( \x -> x + 1 ), list comprehensions, block syntax для DSL Типы: strict mode, flow-sensitive typing Тулинг: LSP и дебаггер Embedding: встраивание Funxy в Go-приложения как скриптовый движок

    habr.com/ru/articles/995104/

    #embedded_languages #backend #devops #функциональное_программирование #скриптовые_языки #скрипты #golang #рекурсия #разработка_языков_программирования #grpc

  35. Funxy два месяца спустя: работа над ошибками, VM и прагматизм

    Два месяца назад я писал на Хабр о первом релизе Funxy — гибридного языка программирования. Тогда это был эксперимент по созданию своего языка с выводом типов, императивного, с функциональными возможностями. С тех пор вышло несколько релизов. Мы исправили много ошибок, переписали рантайм и добавили недостающие инструменты. Хочу рассказать, что изменилось. Стабильность: десятки багфиксов — падения на валидном коде, рекурсия, edge-кейсы VM Рантайм: tree-walk интерпретатор → стековая VM (быстрее, легче по памяти) Язык: const , return , лямбды ( \x -> x + 1 ), list comprehensions, block syntax для DSL Типы: strict mode, flow-sensitive typing Тулинг: LSP и дебаггер Embedding: встраивание Funxy в Go-приложения как скриптовый движок

    habr.com/ru/articles/995104/

    #embedded_languages #backend #devops #функциональное_программирование #скриптовые_языки #скрипты #golang #рекурсия #разработка_языков_программирования #grpc

  36. Funxy два месяца спустя: работа над ошибками, VM и прагматизм

    Два месяца назад я писал на Хабр о первом релизе Funxy — гибридного языка программирования. Тогда это был эксперимент по созданию своего языка с выводом типов, императивного, с функциональными возможностями. С тех пор вышло несколько релизов. Мы исправили много ошибок, переписали рантайм и добавили недостающие инструменты. Хочу рассказать, что изменилось. Стабильность: десятки багфиксов — падения на валидном коде, рекурсия, edge-кейсы VM Рантайм: tree-walk интерпретатор → стековая VM (быстрее, легче по памяти) Язык: const , return , лямбды ( \x -> x + 1 ), list comprehensions, block syntax для DSL Типы: strict mode, flow-sensitive typing Тулинг: LSP и дебаггер Embedding: встраивание Funxy в Go-приложения как скриптовый движок

    habr.com/ru/articles/995104/

    #embedded_languages #backend #devops #функциональное_программирование #скриптовые_языки #скрипты #golang #рекурсия #разработка_языков_программирования #grpc

  37. Funxy два месяца спустя: работа над ошибками, VM и прагматизм

    Два месяца назад я писал на Хабр о первом релизе Funxy — гибридного языка программирования. Тогда это был эксперимент по созданию своего языка с выводом типов, императивного, с функциональными возможностями. С тех пор вышло несколько релизов. Мы исправили много ошибок, переписали рантайм и добавили недостающие инструменты. Хочу рассказать, что изменилось. Стабильность: десятки багфиксов — падения на валидном коде, рекурсия, edge-кейсы VM Рантайм: tree-walk интерпретатор → стековая VM (быстрее, легче по памяти) Язык: const , return , лямбды ( \x -> x + 1 ), list comprehensions, block syntax для DSL Типы: strict mode, flow-sensitive typing Тулинг: LSP и дебаггер Embedding: встраивание Funxy в Go-приложения как скриптовый движок

    habr.com/ru/articles/995104/

    #embedded_languages #backend #devops #функциональное_программирование #скриптовые_языки #скрипты #golang #рекурсия #разработка_языков_программирования #grpc

  38. Монады на 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 #Монады #функциональное_программирование

  39. Интроспекция в Python на реальных примерах: как код узнает сам о себе

    В Python код является данными. Функции, классы, модули и даже стек вызовов можно исследовать во время выполнения программы. Этот механизм называется интроспекцией. Интроспекция активно используется во фреймворках, логировании, тестах, dependency injection контейнерах и отладчиках. При этом многие разработчики пользуются ей неосознанно. Разберем, что это такое, зачем нужно и как применяется на практике. Читать далее...

    habr.com/ru/articles/991498/

    #python #интроспекция #функциональное_программирование #программирование #классы #функции

  40. Интроспекция в Python на реальных примерах: как код узнает сам о себе

    В Python код является данными. Функции, классы, модули и даже стек вызовов можно исследовать во время выполнения программы. Этот механизм называется интроспекцией. Интроспекция активно используется во фреймворках, логировании, тестах, dependency injection контейнерах и отладчиках. При этом многие разработчики пользуются ей неосознанно. Разберем, что это такое, зачем нужно и как применяется на практике. Читать далее...

    habr.com/ru/articles/991498/

    #python #интроспекция #функциональное_программирование #программирование #классы #функции

  41. Интроспекция в Python на реальных примерах: как код узнает сам о себе

    В Python код является данными. Функции, классы, модули и даже стек вызовов можно исследовать во время выполнения программы. Этот механизм называется интроспекцией. Интроспекция активно используется во фреймворках, логировании, тестах, dependency injection контейнерах и отладчиках. При этом многие разработчики пользуются ей неосознанно. Разберем, что это такое, зачем нужно и как применяется на практике. Читать далее...

    habr.com/ru/articles/991498/

    #python #интроспекция #функциональное_программирование #программирование #классы #функции

  42. Интроспекция в Python на реальных примерах: как код узнает сам о себе

    В Python код является данными. Функции, классы, модули и даже стек вызовов можно исследовать во время выполнения программы. Этот механизм называется интроспекцией. Интроспекция активно используется во фреймворках, логировании, тестах, dependency injection контейнерах и отладчиках. При этом многие разработчики пользуются ей неосознанно. Разберем, что это такое, зачем нужно и как применяется на практике. Читать далее...

    habr.com/ru/articles/991498/

    #python #интроспекция #функциональное_программирование #программирование #классы #функции

  43. Kotlin и Arrow: функциональное программирование с Either, Validated и эффектами

    Сегодня расскажем про библиотеку Arrow в Kotlin. Arrow привносит в Kotlin крутые штуки из функционального программирования: типы вроде Either и Validated для работы с ошибками, эффекты для безопасной работы с внешним миром, ну и много всего. Звучит мощно, но когда за это действительно стоит браться?

    habr.com/ru/companies/otus/art

    #kotlin #Arrow #android #функциональное_программирование #обработка_ошибок #валидация_данных #типизация_ошибок

  44. Kotlin и Arrow: функциональное программирование с Either, Validated и эффектами

    Сегодня расскажем про библиотеку Arrow в Kotlin. Arrow привносит в Kotlin крутые штуки из функционального программирования: типы вроде Either и Validated для работы с ошибками, эффекты для безопасной работы с внешним миром, ну и много всего. Звучит мощно, но когда за это действительно стоит браться?

    habr.com/ru/companies/otus/art

    #kotlin #Arrow #android #функциональное_программирование #обработка_ошибок #валидация_данных #типизация_ошибок

  45. Kotlin и Arrow: функциональное программирование с Either, Validated и эффектами

    Сегодня расскажем про библиотеку Arrow в Kotlin. Arrow привносит в Kotlin крутые штуки из функционального программирования: типы вроде Either и Validated для работы с ошибками, эффекты для безопасной работы с внешним миром, ну и много всего. Звучит мощно, но когда за это действительно стоит браться?

    habr.com/ru/companies/otus/art

    #kotlin #Arrow #android #функциональное_программирование #обработка_ошибок #валидация_данных #типизация_ошибок

  46. Kotlin и Arrow: функциональное программирование с Either, Validated и эффектами

    Сегодня расскажем про библиотеку Arrow в Kotlin. Arrow привносит в Kotlin крутые штуки из функционального программирования: типы вроде Either и Validated для работы с ошибками, эффекты для безопасной работы с внешним миром, ну и много всего. Звучит мощно, но когда за это действительно стоит браться?

    habr.com/ru/companies/otus/art

    #kotlin #Arrow #android #функциональное_программирование #обработка_ошибок #валидация_данных #типизация_ошибок

  47. Как изучить программирование за 7 дней (до конца новогодних праздников)?

    Перфолента.NET — это на удивление профессионально выглядящий язык программирования на платформе .NET, который поддерживает объектно-ориентированное и функциональное программирование, и на котором написан даже написан другой язык, функциональный язык программирования — Перфо.NET (интерпретатор). Мой личный опыт Когда я начал немного программировать на Перфоленте/Перфо, моё понимание языков программирования сильно изменилось. Я почувствовал себя как англоязычный программист, пишущий код на родном языке. Это был очень интересный опыт. Я стал больше внимания уделять смыслу слов и терминов, стал строже относиться к названиям. Раньше сложные понятия функционального программирования давались мне тяжело, но теперь всё стало проще. Лямбда-функции, замыкания, каррирование и т.д. — всё это я теперь понимаю по-другому. Особенно когда объясняю ребёнку. Например, лямбда-функция — это просто формула из задачника по математике. Ребёнок понял это сразу! И мы пошли дальше, не останавливаясь. По-моему, главный эффект даёт отказ от псевдонимов и алиасов. Я долго отучался давать названия, из которых сразу понятно, что это за сущность, а не «имена, которые означают...». Второй эффект — это «сокращение контекста». Контекстное окно человека ограничено 3–5 вещами, которые он в состоянии держать в голове и обдумывать. «Псевдонимы/алиасы» съедают это контекстное окно. Поэтому избавление от прокладок в виде «print — это печать» и замена их на простые «вывести_в_консоль», «вывести_в_файл» и т.п. сильно облегчают понимание логики кода.

    habr.com/ru/articles/982880/

    #Компилятор #sheme #lisp #функциональное_программирование #ПерфолентаNet #net #1c #c# #обучение_программированию #креативность

  48. Как функциональное программирование изменило фронтенд и почему отрасль возвращается к платформе

    Недавно я наткнулась на статью « How Functional Programming Shaped Modern Frontend » и неожиданно поймала себя на мысли: мы уже настолько привыкли к функциональному программированию (ФП) в JavaScript, что забыли, как всё начиналось и почему многие идеи казались почти спасением. Чтобы лучше понять эволюцию, я решила посмотреть, что писали разработчики о ФП во фронтенде 10 лет назад, примерно в 2013-2016 годах. Контраст получился довольно яркий: от искреннего восторга до постепенного прозрения. Я решила поделиться своим анализом, основанным на современных наблюдениях и на тех статьях прошлого, где ФП воспринималось как путь к «правильному» фронтенду.

    habr.com/ru/companies/alfa/art

    #фронтенд #функциональное_программирование #программирование #javascript

  49. Funxy — гибридный язык программирования со статической типизацией

    Funxy — гибридный язык программирования со статической типизацией, pattern matching и удобной работой с бинарными данными. Для чего подходит Скрипты и автоматизация. Один бинарник без зависимостей — скачал и работает. Встроенная работа с файлами, JSON, HTTP, SQL. Небольшие приложения. CLI-утилиты, API-сервисы, обработка данных. Работа с бинарными данными. Парсинг на уровне отдельных битов. Сетевые протоколы, форматы файлов, нестандартные структуры. Обучение программированию. Простой синтаксис, но с важными концепциями: типы, pattern matching, иммутабельные структуры данных, рекурсия с TCO (можно писать рекурсивный код без страха переполнения стека).

    habr.com/ru/articles/974674/

    #haskell #monad #tco #скриптовый_язык #разработка_языков_программирования #функциональное_программирование #рекурсия #matching #bitstring #http

  50. Funxy — гибридный язык программирования со статической типизацией

    Funxy — гибридный язык программирования со статической типизацией, pattern matching и удобной работой с бинарными данными. Для чего подходит Скрипты и автоматизация. Один бинарник без зависимостей — скачал и работает. Встроенная работа с файлами, JSON, HTTP, SQL. Небольшие приложения. CLI-утилиты, API-сервисы, обработка данных. Работа с бинарными данными. Парсинг на уровне отдельных битов. Сетевые протоколы, форматы файлов, нестандартные структуры. Обучение программированию. Простой синтаксис, но с важными концепциями: типы, pattern matching, иммутабельные структуры данных, рекурсия с TCO (можно писать рекурсивный код без страха переполнения стека).

    habr.com/ru/articles/974674/

    #haskell #monad #tco #скриптовый_язык #разработка_языков_программирования #функциональное_программирование #рекурсия #matching #bitstring #http