Обновить
15.08

Функциональное программирование *

От Lisp до Haskell

Сначала показывать
Порог рейтинга
Уровень сложности

FPConf 2017. Интервью с Александром Вершиловым

Время на прочтение8 мин
Охват и читатели3.6K
Привет!

Продолжаем говорить про Haskell со спикерами FPConf 2017.

Павел Аргентов задал несколько вопросов Senior Software Engeneer в Tweag I/O Александру Вершилову, программисту, который уже 10 лет продвигает Haskell в индустрии.
Читать дальше →

FPConf 2017. Интервью с Денисом Шевченко

Время на прочтение8 мин
Охват и читатели4.9K
Привет!

Начинаем публиковать разговоры со спикерами FPConf 2017. Павел Аргентов расспросил самого зажигательного евангелиста ФП и Haskell Дениса Шевченко.



В начале разговора — расскажи немного о себе.

Меня зовут Денис Шевченко. Я основатель сообщества ruHaskell. В данный момент тружусь Haskell-разработчиком в компании IOHK. Бывший С++-разработчик, ныне Хаскелист, начинающий ФП-евангелист и автор незаконченной книги “Haskell по-человечески”.
Читать дальше →

Приглашаем на конференцию FPConf 2017

Время на прочтение8 мин
Охват и читатели3.2K
Привет!

2 декабря ждем всех, кто любит делать это функционально на третьей конференции FPConf — конференции о Haskell, Scala, Clojure, Elixir, Kotlin, F# и функциональных подходах в программировании фронтендов, бэкендов и чего угодно на чем угодно. Больше монад, лямбд, замыканий! Всем иммутабельность, друзья :)

Традиционно, приглашаем как опытных функциональщиков, так и тех, кто только хочет получить вдохновение и расширить горизонты.

Цена билета сейчас — 5000 рублей. Регистрация тут.

Что в программе:

image Arnaud Spiwack, core-разработчик Coq Proof Assistant, старший архитектор в Tweag I/O

USING HASKELL TO GREAT EFFECT

It is beyond cliché, nowadays, to say that testing is really important. This is even more so in I/O intensive applications because so many things can go wrong. Unfortunately, testing I/O intensive applications is particularly hard. We have to mock all our files, data-bases, and so on. But even so, we're only scratching the surface: so many things can go wrong. How do we test for absence of deadlocks? Of races?

I came to the conclusion that Haskell's insistence on purity made it, paradoxically, one of the best languages to write I/O intensive programs. The reason for this is that Haskell makes it very easy to mock every single aspects of the I/O fabric, hence testing is more powerful. Up to checking for the absence of deadlocks and races. This talk will discuss the programming patterns which emerge from this point of view, and, of course, encourage you do use them in your programs.
Смотреть всю программу

Функциональная архитектура — это порты и адаптеры

Время на прочтение9 мин
Охват и читатели25K
Представляю вашему вниманию новую статью Mark Seemann. Похоже, с таким количеством переводов он скоро станет топовым хаброавтором, даже не имея здесь аккаунта!

Чем интересна функциональная архитектура? Она имеет тенденцию попадать в так называемую «яму успеха» («Pit of Success»), в условиях которой разработчики оказываются в ситуации, вынуждающей писать хороший код.


Обсуждая объектно-ориентированную архитектуру, мы часто сталкиваемся с идеей архитектуры портов и адаптеров, хотя часто называем ее как-либо иначе: многоуровневой, луковой или гексагональной архитектурой. Смысл состоит в том, чтобы отделить бизнес-логику от деталей технической реализации, чтобы мы могли варьировать их независимо друг от друга. Это позволяет нам маневрировать, реагируя на изменения в бизнесе или в технологиях.

Читать дальше →

Money-моноид

Время на прочтение10 мин
Охват и читатели13K

Mark Seeman рассказывает о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell.

Этот хабрапост — вторая статья из цикла статей о моноидах:

Читать дальше →

DotNext 2017 Moscow: возвращение хардкора

Время на прочтение25 мин
Охват и читатели7.5K


12-13 ноября (то есть всего через пару недель) состоится DotNext 2017 Moscow, крупнейшая в России конференция, посвященная разработке на платформе .NET. Среди наших докладчиков — ведущие отраслевые эксперты из России, Европы и США. Основные темы конференции — внутренности работы платформы (CLR, GC, JIT), лучшие практики по использованию инструментов, профилирование и оптимизация производительности, многопоточное программирование, нововведения платформы, решения сложных кейсов.


Под катом — детальный разбор программы, несколько слов о нововведениях этого года и секретный промокод со скидкой.

Читать дальше →

Каррирование и частичное применение на C++14

Время на прочтение10 мин
Охват и читатели15K

В этой статье я расскажу об одном из вариантов каррирования и частичного применения функций в любимом мною C++, покажу свою экспериментальную реализацию сего действа и объясню без математики, на пальцах, что такое вообще каррирование и что же под капотом у kari.hpp, с помощью которой мы и будем каррировать функции. Ну и как тут принято: заинтересовавшихся — прошу под кат.

Читать дальше →

ROS, ELM и черепашка

Время на прочтение6 мин
Охват и читатели6.6K
Robotic Operation System позволяет взаимодействовать своим подсистемам по механизмам «подписка на топик» и «вызов сервиса» по своему специальному протоколу. Но есть пакет rosbridge, который позволяет общаться с ROS извне с помощью websocket. Описанный протокол позволяет выполнять основные операции по взаимодействию с другими подсистемами.

ELM — очень простой и элегантный язык, компилирующийся в javascript и отлично подходящий для разработки интерактивных программ.

Я решил совместить приятное с полезным и изучать ROS (по которой сейчас идет курс) и ELM вместе.
Читать дальше →

Моноиды, полугруппы и все-все-все

Время на прочтение12 мин
Охват и читатели47K

Если ты на практике используешь ООП, то хорошо разбираешься в таких вещах, как «паттерны проектирования». А знаешь ли ты, что есть множество полезных паттернов, которые не укладываются в этот стандартный список? К сожалению, многие из них связаны с «функциональным программированием», которое, согласно легенде, сложное и заумное. Если десять раз сказать слово «моноид», можно вызвать Дьявола.


Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

Читать дальше →

GoToChain: как школьники блокчейн в деревне писали

Время на прочтение11 мин
Охват и читатели4.8K

Был жаркий август. Шла очередная летняя школа. На направлении функционального программирования все было неспокойно: вместо пота с нас капали монады, и в небе пролетала хмурая тень Coq-а.


Школа проходила вполне обычно, как и все детские лагеря. После накоживания чисел Пеано на Хаскелле мы пилили компиляторы и интерпретаторы разных сортов и размеров (от самопального до LLVM), писали своё ядро на Rust и обсуждали теорию групп, проводя аналогии с лёгкими французскими романами в общем, было задорно.


А ещё у нас был хакатон. Одна из команд, вдохновившись Zeitgeist и партнёрскими спиннерами, взялась за разработку системы проведения конкурсов и обработки решений с помощью смарт-контрактов, запланировав несколько идей применения блокчейна для сообщества вокруг школы. Какие инновации из этого вышли — под катом.


Читать дальше →

Железнодорожно-ориентированное программирование. Обработка ошибок в функциональном стиле

Время на прочтение11 мин
Охват и читатели24K

Как пользователь я хочу изменить ФИО и email в системе.

Для реализации этой простой пользовательской истории мы должны получить запрос, провести валидацию, обновить существующую запись в БД, отправить подтверждение на email пользователю и вернуть ответ браузеру. Код будет выглядеть примерно одинаково на C#:

string ExecuteUseCase() 
{ 
  var request = receiveRequest();
  validateRequest(request);
  canonicalizeEmail(request);
  db.updateDbFromRequest(request);
  smtpServer.sendEmail(request.Email);
  return "Success";
}

и F#:

let executeUseCase = 
  receiveRequest
  >> validateRequest
  >> canonicalizeEmail
  >> updateDbFromRequest
  >> sendEmail
  >> returnMessage
Читать дальше →

Объединяем Websockets, Lisp и функциональное программирование

Время на прочтение10 мин
Охват и читатели6.8K

Alt text


Объединяем Websockets, Lisp и функциональное программирование. Но как?

Читаем

Монады для Go-программистов

Время на прочтение12 мин
Охват и читатели24K

Монады используются для компоновки функции (function composition) и избавления от связанного с этим утомительного однообразия. После семи лет программирования на Go необходимость повторять if err != nil превращается в рутину. Каждый раз, когда я пишу эту строку, я благодарю Gopher’ов за читабельный язык с прекрасным инструментарием, но в то же время проклинаю за то, что чувствую себя наказанным Бартом Симпсоном.


Читать дальше →

Ближайшие события

RailsClub 2017. Интервью с организатором elixir-lang.moscow Никитой Соболевым

Время на прочтение5 мин
Охват и читатели2.5K
Мы уже пакуем 600 пакетов раздатки для участников RailsClub 2017 23 сентября, а наши спикеры добавляют последние штрихи к своим презентациям. Сегодня Алексей Могильников поговорил об Elixir c Никитой Соболевым, который делает сервисы в wemake.services, организет встречи elixir-lang.moscow и является амбассадором Auth0
.

image
Читать дальше →

RailsClub 2017. Ответ на три главных вопроса от Piotr Solnica

Время на прочтение3 мин
Охват и читатели1.9K
До RailsClub 2017 совсем немного (кстати, даже если вы не идете, не забывайте голосовать за Героев Руби). Сегодня хотим познакомить поближе еще с одним нашим гостем — Piotr Solnica, автором rom-rb и dry-rb и, как Петр пишет про себя, «all-around OSS contributor».

image

Как ты считаешь, какая самая большая задача сейчас стоит перед Ruby и RoR сообществом?
Читать дальше →

RailsClub 2017. Интервью с Никитой Шильниковым, Dry-rb и Rom-rb core-разработчиком

Время на прочтение4 мин
Охват и читатели3.3K
Отсчет до конференции RailsClub 2017 идет на дни, а мы продолжаем публиковать разговоры с нашими спикерами. Павел Аргентов расспросил Никиту Шильникова, разработчика Dry-rb и Rom-rb, о работе, книгах и состоянии дел в Ruby-сообществе.

image

Как ты начал программировать на Ruby?
Читать дальше →

OO VS FP

Время на прочтение4 мин
Охват и читатели27K
Мой перевод, как и оригинальный доклад вызвали неоднозначную реакцию в комментариях. Поэтому я решил перевести статью-ответ дяди Боба на оригинальный материал.
Множество программистов на протяжении последних лет утверждают, что ООП и ФП — являются взаимоисключающими. С высоты башни из слоновой кости в облаках, ФП-небожители иногда поглядывают вниз на бедных наивных ООП-программистов и снисходят до надменных комментариев. Приверженцы ООП в свою очередь косо смотрят на «функционыльщиков», не понимая, зачем чесать левое ухо правой пяткой.

Эти точки зрения игнорируют саму суть ООП и ФП парадигм. Вставлю свои пять копеек.
Читать дальше →

«Паттерны» функционального программирования

Время на прочтение10 мин
Охват и читатели76K

Многие люди представляют функциональное программирование как нечто очень сложное и «наукоемкое», а представителей ФП-сообщества – эстетствующими философами, живущими в башне из слоновой кости.

До недавнего времени такой взгляд на вещи действительно был недалек от истины: говорим ФП, подразумеваем Хаскель и теорию категорий. В последнее время ситуация изменилась и функциональная парадигма набирает обороты в web-разработке, не без помощи F#, Scala и React. Попробуем взглянуть на «паттерны» функционального программирования, полезные для решения повседневных задач с точки зрения ООП – парадигмы.

ООП широко распространено в разработке прикладного ПО не одно десятилетие. Все мы знакомы с SOLID и GOF. Что будет их функциональным эквивалентом?.. Функции! Функциональное программирование просто «другое» и предлагает другие решения.


Читать дальше →

RailsClub 2017. Интервью с Luca Guidi, автором Hanami: смешиваем FP и OOP в Ruby

Время на прочтение7 мин
Охват и читатели3.1K
Всем привет! Мы вовсю готовимся к RailsClub, который состоится 23 сентября (ааааа, это уже на следующей неделе!!). Программа на сайте, 500 крутых рубистов уже зарегистрировались, ждем только тебя! Еще можно успеть заскочить в последний вагон и поучаствовать в главном Ruby событии года в России.

У Павла Аргентова получилось очень интересное интервью с потрясающим человеком. Luca Guidi — семьянин, независимый OSS разработчик, автор Ruby фреймворка Hanami.

image
Читать дальше →

Эзотерический язык, транслирующийся в шаблоны C++

Время на прочтение23 мин
Охват и читатели21K
КПДВ с примерами кода Шаблоны C++ — полный по Тьюрингу язык, на котором можно писать compile-time программы. Только вот синтаксис рассчитан на описание параметризованных типов и слабо приспособлен к ясному выражению чего-то более сложного. В этой статье рассмотрим, как типы и шаблоны становятся значениями и функциями, а также узнаем, к чему привела попытка автора создать свой функциональный язык, транслирующийся в шаблоны C++. Для прочтения текста знания в области функционального программирования почти не требуются.
Читать дальше →