JetBrains Research — наука, меняющая мир

Семинар по генерации кода по типам данных с использованием библиотеки visitors

Для пользовательских типов данных зачастую желательно иметь под рукой функции, которые делают некоторые стандартные операции, например: преобразование в строку, fmap для конкретного типа данных и прочее. Написание такого кода вручную --- не очень сложная задача, но при этом несколько утомительная, так как код, в основном, однотипный. На практике, в основном, используются генераторы такого кода и справляются с этой задачей. Они хорошо работают для генерации того, для чего они предназначены, но если необходимо как-то видоизменить генерируемый код, то часто приходится писать его руками, не используя генератор. При этом существуют генераторы кода, которые позволяют видоизменять части сгенерённого кода, одна из них - библиотека visitors, разработанная Франсуа Потье. Эта библиотека представляет определённый интерес для нас, потому что в рамках лаборатории уже имеется проект (GT), который был придуман независимо и пытается решать те же проблемы сходным способом.

В докладе планируется обсудить

- требования, которым должен удовлетворять хороший генератор кода по типам данных;

- промежуточный (между наивным и библиотекой visitors) вариант генерации кода, который был написан вручную и используется в компиляторе языка OCaml;

- особенности реализации библиотеки visitors.

Материалы к докладу:

1. Документация

2. Доклад на ICFP (с 22-й минуты)

3. Francois Pottier. Visitors Unchained. ICFP 2017

4. Репозиторий

Докладчик --- Дмитрий Косарев.

13.11.2017, 17:15.

Место: ауд. 3248, мат-мех. факультет СПбГУ, Старый Петергоф, Университетский пр-т, д. 28