kazan,24-25 may 2019

FUNCTIONAL
PROGRAMMING
CONFERENCE

Scala, Clojure, F#, Haskell, Elixir and
others
registration is open
vk.comtelegram.comtwitter.com

speakers

granin photo
Александр
Гранин

Final Tagless vs Free Monad

Final Tagless и Free monad - два конкурирующих подхода в ФП, которые призваны решать схожие задачи. С их помощью можно разделить систему на компоненты, чтобы контролировать ее сложность. И в Final Tagless, и в Free Monad вы описываете интерфейсы к подсистемам, а затем разрабатываете на них бизнес-логику в виде монадических скриптов. При этом имплементацию подсистем можно подменять в рантайме, а при необходимости, заменять моками. Final Tagless и Free Monad - это чисто функциональные подходы к Inversion of Control, но основаны они на разных принципах. В Final Tagless интерфейсы подсистем - это классы типов, а в Free Monad - это первоклассные алгебраические eDSL. В сообществе функциональщиков (как Scala, так и Haskell) не утихают споры, какой из подходов лучше или правильнее. На примере реального приложения попробуем разобраться, когда лучше тот или другой, и как они могут быть использованы для более качественного дизайна приложений в функциональном стиле.

Final Tagless vs Free Monad

read more
bragilevskiy photo
Виталий
Брагилевский
Южный федеральный университет

Краткий курс компиляторостроения на Haskell

Разработка компиляторов — это одна из самых увлекательных программистских задач. С одной стороны, давно известно, как это делается, а с другой — каждому интересно попробовать. В этом докладе я расскажу, как пишут компиляторы, почему Хаскель хорошо для этого подходит, и что нужно про него знать, чтобы это сделать (спойлер: не очень много!).

Краткий курс компиляторостроения на Haskell

read more
sharihin photo
Александр
Шарихин
eLama

React-компоненты на Scala.Js. Fullstack-разработка с радостью

Опыт перехода на Scala.Js - особенности разработки и подводные камни - а также в реальном времени будет разработан react-компонент на Scala.js, использующий общий код с backend, и он будет проинтегрирован в проект на JavaScript.

React-компоненты на Scala.Js. Fullstack-разработка с радостью

read more
syroveckiy photo
Юрий
Сыровецкий
ff.systems

Опыт чисто функциональной реализации полностью доступных систем на основе CRDT и RON

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

Опыт чисто функциональной реализации полностью доступных систем на основе CRDT и RON

read more
prokopov photo
Никита
Прокопов

Делаем все Clojure-инструменты сами

Среди моих инструментов для программирования: мой собственный шрифт, моя цветовая схема, собственная Clojure-грамматика, мои собственные правила форматирования, моя собственная реализация REPL. Зачем я все это сделал? Чего мне не хватало в существующих инструментах? Что из этого можно использовать, и, что более важно, какие уроки можно извлечь?

Делаем все Clojure-инструменты сами

read more
rogozin photo
Даня
Рогозин
Serokell

Разработка, основанная на типах, в Numeric Haskell: подходы и проблемы.

В нашем докладе мы обсудим способы разработки, основанной на типах (type-driven development) в машинном обучении. Во время нашей реализации на Haskell модели гауссовских процессов со скрытыми переменными (Gaussian process latent variable model), мы пытались решить проблемы связанные с размерностями на уровне типов. Доклад содержит также обзор численных библиотек и подходов, которые с нашей точки зрения наиболее эффективны. Эти способы решения поставленных задач далеки от идеальных, поэтому мы опишем также и недостатки, которые могут быть решены с помощью зависимых типов.

Разработка, основанная на типах, в Numeric Haskell: подходы и проблемы.

read more
strungis photo
Ринат
Стрюнгис
Serokell

Разработка, основанная на типах, в Numeric Haskell: подходы и проблемы

В нашем докладе мы обсудим способы разработки, основанной на типах (type-driven development) в машинном обучении. Во время нашей реализации на Haskell модели гауссовских процессов со скрытыми переменными (Gaussian process latent variable model), мы пытались решить проблемы связанные с размерностями на уровне типов. Доклад содержит также обзор численных библиотек и подходов, которые с нашей точки зрения наиболее эффективны. Эти способы решения поставленных задач далеки от идеальных, поэтому мы опишем также и недостатки, которые могут быть решены с помощью зависимых типов.

Разработка, основанная на типах, в Numeric Haskell: подходы и проблемы

read more
argentov photo
Павел
Аргентов
Evrone.com

Multicore: прекрасный OCaml будущего

Многолетняя мечта поколений разработчиков и многолетний челлендж других разработчиков, Multicore OCaml манит эффективным мультиплексированием функций в многоядерных архитектурах. Обещаны изменения и в базе языка, и под капотом. Мы пробежимся по основным особенностям новой реализации и отметим, какие проблемы сдерживают наступление светлого будущего.

Multicore: прекрасный OCaml будущего

read more
nizhnikov photo
Олег
Нижников
Tinkoff

После монад. Стрелочная и моноидальная композиция

Монады стали неотъемлемым атрибутом рассказов о ФП. Однако они накладывают множество ограничений, которые можно преодолеть, предоставив более слабые, но всё ещё очень выразительные абстракции - стрелки и моноидальные категории. Рассмотрим какие возможности и проблемы возникают при использовании стрелочной и моноидальной композиций.

После монад. Стрелочная и моноидальная композиция

read more
pirogov photo
Алексей
Пирогов
Hexlet

Функциональный дизайн и паттерны ФП

Считается, что в ФП паттерны проектирование не нужны - у нас же для всего есть функции! Однако и при разработке в функциональном стиле находится место для решений, которые достаточно универсальны и применимы за рамками конкретного языка, проекта и даже парадигмы! Поговорим о таких штуках, как "окружение", "состояние", "неподвижная точка" и прочих "катаморфизмах".

Функциональный дизайн и паттерны ФП

read more
khudobahshov photo
Виталий
Худобахшов
JetBrains

Как из интерпретатора сделать компилятор автоматически?

Частичные вычисления придумали достаточно давно, однако эта техника до сих пор не является чем-то доступным широкому кругу специалистов по Computer Science и разработчиков. В своем докладе я расскажу про то, что это такое, почему это так важно и как обстоят дела в этом вопросе прямо сейчас.

Как из интерпретатора сделать компилятор автоматически?

read more
samoilov photo
Владимир
Самойлов
Эвотор

Чистое кроссмодульное тестирование событийно-ориентированных приложений

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

Чистое кроссмодульное тестирование событийно-ориентированных приложений

read more
vershilov photo
Александр
Вершилов
Tweag.io

Capability of the Haskell Architecture

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

Capability of the Haskell Architecture

read more
tolchanov photo
Игнат
Толчанов
Transcrypt

Inside BEAM: the biggest thing Erlang and Elixir have

Языки редко бывают полезны сами по себе. Насколько бы ни была чудесна их семантика, её должен кто-то обеспечивать на исполнительном уровне. В докладе будут истории из развития виртуальной машины Erlang и рассказы о функционировании наиболее значимых её частей. В итоге вместе с аудиторией попытаемся разобраться почему же BEAM — самая главная вещь, которая есть у использующих Erlang и Elixir (и LFE, ну вдруг).

Inside BEAM: the biggest thing Erlang and Elixir have

read more
arshinov photo
Максим
Аршинов
Хайтек Груп

F# в корпоративной среде

Java и C# используются для энтерпрайз-разработки уже не одно десятилетие. Значит ли это что ООП-парадигма - единственно верное решение для корпоративного сектора? Если бы это было так, то мы бы видели повсеместное использование богатых моделей (rich domain model), а не анемичных (anemic domain model), ведь “классическое” ООП предполагает совмещение структур данных и операций над ними в рамках одного класса. В реальности корпоративные приложения довольно часто представляют собой наборы объектов-контейнеров с публичными полями, herlper’ов и service’ов. Т.е. Структуры данных отделены от поведения. В докладе будет рассмотрен подход к разработке корпоративных web-приложений в функциональном стиле на примере языка F#.

F# в корпоративной среде

read more
kuznetsov photo
Борис
Кузнецов
Clover Group

Современные подходы к созданию DSL на Scala

Мы обсудим некоторые решения и компромисcы для реализации мощного DSL для промышленных клиентов. Рассмотрим pattern matching, ScalaZ Arrows и Shapeless/Parboiled для получения универсальных типов данных. Мы также рассмотрим DSL эффекты, упакованные в компоненты ZIO для того, чтобы создавать чистый, масштабируемый и высоко производительный код.

Современные подходы к созданию DSL на Scala

read more
gushya photo
Антон
Гуща
HXR Team

FRP на фронтенде и reflex-dom в больших проектах

Опыт применения GHCJS в проектах на 30+ kloc. Организация монад для авторизации, локализация, организация роутинга URL на servant like решении, поддержка кнопки "назад" и оптимизации итогового JS кода. Бонус: получение нативных android и ios приложений на хаскелле.

FRP на фронтенде и reflex-dom в больших проектах

read more
glushkov photo
Иван
Глушков

Опыт использования OpenCensus, в том числе на Elixir/Erlang проектах

В современном мире микросервисов практически невозможно жить без сквозного логирования. OpenCensus - это одно из самых популярных решений этой проблемы. Я расскажу что это вообще такое, как оно работает, про наш опыт его использования, про реализацию библиотек для Elixir/Erlang, про то, как их использовать. Немного кода, немного объяснений с картинками, немного личного опыта - в сумме должно получиться интересно и не слишком скучно.

Опыт использования OpenCensus, в том числе на Elixir/Erlang проектах

read more
sergeev photo
Павел
Сергеев
JetBrains

Текстовый редактор как Immutable Value

Существует множество текстовых редакторов Vim, Emacs, Monaco (VS Code), CodeMirror (Light Table), Xi, Yi. Однако, большинство из них написано в императивном стиле. В докладе я расскажу о том, как мы решили написать текстовый редактор на Clojure, какие трудности при этом возникли и какая польза может быть от персистентных структур данных, зипперов и трансдьюсеров.

Текстовый редактор как Immutable Value

read more
volkov photo
Дмитрий
Волков

Прототипы на Хаскелле вокруг библиотек на С

На C есть много интересного, особенно сетевого и низкоуровневого, но писать на нём приложения совершенно не хочется. На примере маленького и шустрого ротатора SSH-прокси и биндингов к большому GNUnet расскажу, как быстро склепать что-нибудь, как дела с автогенерацией биндингов, почему не $PL_NAME, почему не Хаскелль, и как отлаживать сегфолты в двухстороннем FFI.

Прототипы на Хаскелле вокруг библиотек на С

read more
turchenkov photo
Михаил
Турченков
Сбербанк

Реактивные потоки данных на Scala, от бэка до фронта. Практический обзор

Потоки данных - интуитивно выразительная модель для разработки, прекрасно ложащаяся на семантику функционального программирования. В докладе рассмотрена с прикладным уклоном Scala-экосистема вокруг Akka Streams и Kafka, в сравнении с Monix и Functional Streams. Построена карта стека технологий, описаны основные виды архитектур. Расскажем о распространенных ошибках и ряде бесценных aha-moments, о границах асинхронности, о методах интеграции с Actor-ами и Kafka, о реализации event sourcing. На примере микросервисного приложения с WEB GUI на основе Scala.js будет показана возможность провести streams на фронтэнд, оставшись при этом на единой синтаксической платформе и библиотеке предметной области. Показана применимость платформы для пайплайнов данных с интерактивными графическими этапами обработки.

Реактивные потоки данных на Scala, от бэка до фронта. Практический обзор

read more
kapylova photo
Анна
Капылова
Сбербанк

Реактивные потоки данных на Scala, от бэка до фронта. Практический обзор

Потоки данных - интуитивно выразительная модель для разработки, прекрасно ложащаяся на семантику функционального программирования. В докладе рассмотрена с прикладным уклоном Scala-экосистема вокруг Akka Streams и Kafka, в сравнении с Monix и Functional Streams. Построена карта стека технологий, описаны основные виды архитектур. Расскажем о распространенных ошибках и ряде бесценных aha-moments, о границах асинхронности, о методах интеграции с Actor-ами и Kafka, о реализации event sourcing. На примере микросервисного приложения с WEB GUI на основе Scala.js будет показана возможность провести streams на фронтэнд, оставшись при этом на единой синтаксической платформе и библиотеке предметной области. Показана применимость платформы для пайплайнов данных с интерактивными графическими этапами обработки.

Реактивные потоки данных на Scala, от бэка до фронта. Практический обзор

read more
shevchenko photo
Денис
Шевченко
IOHK

Моноид в категории эндофункторов?

Определение монады давно стало мемом в сообществе. В самом деле, это всего лишь моноид в категории эндофункторов, в чём проблема? Но ведь это больше чем просто мем - в нём отражено отношение сообщества к математическим корням Haskell, да и к математике в целом: её по-прежнему считают не только чрезмерно сложной, но и совершенно ненужной программисту. А между тем сама наша профессия глубоко математична по своей природе, и потому некоторые разделы математики - в частности, теория категорий - могут принести нам пользу, в том числе и сугубо практическую. Цель моего доклада - доказать это.

Моноид в категории эндофункторов?

read more
ziyatdinov photo
Мансур
Зиятдинов

Языки Шрёдингера, или На чём программировать квантовые компьютеры?

Я расскажу о квантовых вычислениях и сделаю обзор языков программирования для квантовых компьютеров, порассуждаю о полезности функциональной парадигмы и теории категорий, и о том, что может помешать языкам на их основе достичь успеха.

Языки Шрёдингера, или На чём программировать квантовые компьютеры?

read more
chernichkin photo
Станислав
Черничкин
Сбербанк

Низкоуровневая оптимизация программ на Haskell

В данном докладе будут рассмотрены приёмы программирования на языке программирования Haskell, позволяющие на выходе компилятора получать высокоэффективный машинный код на примере работы с бинарными данными. Будут продемонстрированы некоторые факторы, ведущие к снижению производительности, а также способы, позволяющие их избежать. Будет рассмотрен ассемблерный код, генерируемый некоторыми библиотеками бинарной сериализации, проведено его сравнение с кодом, написанным вручную.

Низкоуровневая оптимизация программ на Haskell

read more
potanin photo
Михаил
Потанин
Waves

RIDE: функциональный язык смарт-контрактов

Михаил Потанин в докладе будет рассказывать про то, зачем и как в компании Waves придумывали и имлементировали свой функциональный язык для смарт-контрактов. Блокчейн и смарт-контракты уже стали обычными темами для разработчиков, поэтому в этом докладе мы будем говорить о них по минимуму, сконцентрировав свое внимание на специфических требованиях к языку для контрактов и на том, каким в итоге получился язык для смарт-контрактов RIDE.

RIDE: функциональный язык смарт-контрактов

read more
pashkov photo
Александр
Пашков

Nixify you some Haskell for great good

Разговор пойдёт о Nix - "чисто-функциональном пакетном менеджере Linux", как сообщает нам Википедия. Будем разбираться, что означает это заклинание и как его применять для борьбы с dependency hell в Haskell.

Nixify you some Haskell for great good

read more
koltsov photo
Максим
Кольцов
BIOCAD

Воркшоп: Neo4j + Haskell + hasbolt

На этом воркшопе мы научимся работать с графовой базой данных Neo4j с помощью языка Haskell. Сначала мы рассмотрим саму базу и её язык запросов — Cypher. Потом мы поработаем с ней из Haskell с помощью библиотек hasbolt и hasbolt-extras, которые были разработаны в компании Biocad. Мы научимся посылать любые запросы из кода на Haskell, а потом узнаем как делать это более кратко и безопасно.

За время воркшопа вы потрогаете графовую базу данных Neo4j своими руками, поработаете с ней из Haskell и поймете, стоит ли использовать её в своих проектах.
Используемые технологии: GHC 8.6, stack tool, Docker с Neo4j. Минимальные требования к участнику: знакомство с языком Haskell.
С кодом примеров и инструкциями по установке можно ознакомиться в нашем репозитории: https://github.com/biocad/neo4j-workshop Рекомендуем участникам воркшопа ознакомиться с README и установить все необходимое на свой ноутбук заранее.

Воркшоп: Neo4j + Haskell + hasbolt

read more
mirzoev photo
Денис
Мирзоев
BIOCAD

Воркшоп: Neo4j + Haskell + hasbolt

На этом воркшопе мы научимся работать с графовой базой данных Neo4j с помощью языка Haskell. Сначала мы рассмотрим саму базу и её язык запросов — Cypher. Потом мы поработаем с ней из Haskell с помощью библиотек hasbolt и hasbolt-extras, которые были разработаны в компании Biocad. Мы научимся посылать любые запросы из кода на Haskell, а потом узнаем как делать это более кратко и безопасно.

За время воркшопа вы потрогаете графовую базу данных Neo4j своими руками, поработаете с ней из Haskell и поймете, стоит ли использовать её в своих проектах.
Используемые технологии: GHC 8.6, stack tool, Docker с Neo4j. Минимальные требования к участнику: знакомство с языком Haskell.
С кодом примеров и инструкциями по установке можно ознакомиться в нашем репозитории: https://github.com/biocad/neo4j-workshop Рекомендуем участникам воркшопа ознакомиться с README и установить все необходимое на свой ноутбук заранее.

Воркшоп: Neo4j + Haskell + hasbolt

read more
tchitchigin photo
Александр
Чичигин
positive technologies

Воркшоп: Почти production-ready Web-приложение на Phoenix за полтора часа

В рамках воркшопа мы создадим Web-приложение для управления задачами подобно Asana.
Воркшоп рассчитан на начинающих, тех, кто ещё не знаком с фреймворком Phoenix. Даже знание языка Elixir не обязательно. Тем не менее, тесное знакомство с разработкой Web-приложений, архитектурой MVC и реляционными БД крайне желательно.

Подготовка: с собой необходимо иметь ноутбук с установленными PostgreSQL, Erlang, Elixir и Phoenix. Процесс установки описан в руководстве: https://hexdocs.pm/phoenix/installation.html

Воркшоп: Почти production-ready Web-приложение на Phoenix за полтора часа

read more

Agenda

9:00 - 9:45
registration & Welcome coffee
registration & Welcome coffee
9:45 - 10:00
Welcome speech
Welcome speech
10:00 - 10:45
keynote (зал пушкин)
keynote (зал пушкин)
Денис Шевченко
Моноид в категории эндофункторов?
10:45 - 11:00
Break
Break
11:00 - 11:45
зал пушкин
зал достоевский
зал пушкин
Алексей Пирогов
Функциональный дизайн и паттерны ФП
зал достоевский
Владимир Самойлов
Чистое кроссмодульное тестирование событийно-ориентированных приложений
11:45 - 12:00
Break
Break
12:00 - 12:45
зал пушкин
зал достоевский
зал пушкин
Павел Аргентов
Multicore: прекрасный OCaml будущего
зал достоевский
Александр Вершилов
Capability of the Haskell Architecture
12:45 - 13:00
Break
Break
13:00 - 13:45
зал пушкин
зал достоевский
зал пушкин
Максим Аршинов
F# в корпоративной среде
зал достоевский
Александр Пашков
Nixify you some Haskell for great good
13:45 - 15:00
Lunch
Lunch
15:00 - 15:45
зал пушкин
зал достоевский
зал пушкин
Виталий Худобахшов
Как из интерпретатора сделать компилятор автоматически?
зал достоевский
Борис Кузнецов
Современные подходы к созданию DSL на Scala
15:45 - 16:00
Break
Break
16:00 - 16:45
зал пушкин
зал достоевский
зал пушкин
Павел Сергеев
Текстовый редактор как Immutable Value
зал достоевский
Дмитрий Волков
Прототипы на Хаскелле вокруг библиотек на С
16:45 - 17:15
Break
Break
17:15 - 18:00
зал пушкин
зал достоевский
зал пушкин
Иван Глушков
Опыт использования OpenCensus, в том числе на Elixir/Erlang проектах
зал достоевский
Станислав Черничкин
Низкоуровневая оптимизация программ на Haskell
19:00
Afterparty
Afterparty
10:00 - 10:45
keynote (зал пушкин)
keynote (зал пушкин)
Виталий Брагилевский
Краткий курс компиляторостроения на Haskell
10:45 - 11:00
Break
Break
11:00 - 11:45
зал пушкин
зал достоевский
зал пушкин
Мансур Зиятдинов
Языки Шрёдингера, или На чём программировать квантовые компьютеры?
зал достоевский
Даниэль Рогозин + Ринат Стрюнгис
Type-driven development in Numeric Haskell: approaches and problems
11:45 - 12:00
Break
Break
12:00 - 12:45
зал пушкин
зал достоевский
workshop (зал чехов)
зал пушкин
Михаил Потанин
Ride: простой функциональный язык смарт-контрактов
зал достоевский
Михаил Турченков + Анна Капылова
Реактивные потоки данных на Scala, от бэка до фронта. Практический обзор
workshop (зал чехов)
Максим Кольцов + Денис Мирзоев
Neo4j + Haskell + hasbolt
12:45 - 13:00
Break
Break
13:00 - 13:45
зал пушкин
зал достоевский
workshop (зал чехов)
зал пушкин
Игнат Толчанов
Inside BEAM: the biggest thing Erlang and Elixir have
зал достоевский
Юрий Сыровецкий
Опыт чисто функциональной реализации полностью доступных систем на основе CRDT и RON
workshop (зал чехов)
Максим Кольцов + Денис Мирзоев
Neo4j + Haskell + hasbolt
13:45 - 15:00
Lunch
Lunch
15:00 - 15:45
зал пушкин
зал достоевский
workshop (зал чехов)
зал пушкин
Александр Гранин
Final Tagless vs Free Monad
зал достоевский
Александр Шарихин
React-компоненты на Scala.Js. Fullstack-разработка с радостью
workshop (зал чехов)
Александр Чичигин
Почти production-ready Web-приложение на Phoenix за полтора часа
15:45 - 16:00
Break
Break
16:00 - 16:45
зал пушкин
зал достоевский
workshop (зал чехов)
зал пушкин
Олег Нижников
После монад. Стрелочная и моноидальная композиция
зал достоевский
Антон Гуща
FRP на фронтенде и reflex-dom в больших проектах
workshop (зал чехов)
Александр Чичигин
Почти production-ready Web-приложение на Phoenix за полтора часа
16:45 - 17:15
Break
Break
17:15 - 18:00
keynote (зал пушкин)
keynote (зал пушкин)
Никита Прокопов
Делаем все Clojure-инструменты сами

fpure

The ticket price includes attendance of lectures and workshops, lunches and buffets, branded handout.

6000RUB

participant
days
tracks
speakers

In good company

organizer

general partner

partners

info partners

travel partners

If you have a question, please write us!

orginizer Kostya photo
Konstantin Makarychev

Speaking opportunities, Strategic cooperation

orginizer Nadezhda photo
Nadezhda Knyazeva

Sponsorship, Partnership, Registration and payments for participation in conferences

orginizer Vadim photo
Vadim Chelyshov

Speaking opportunities, Strategic cooperation

E-mail: qtankle@gmail.com
Telegram: @dos65

location

City of Kazan, Nikolay Ershov Street, 1A, Tatarstan Republic,
Russia, 420045