Компилятор функционального языка программирования

Нашим коллективом разрабатывается сопроцессор для операций разреженной линейной алгебры. Для сопроцессора разрабатывается специализированный язык программирования и его компилятор [LamaGraph.Compiler] (https://github.com/Lamagraph/interaction-nets-in-fpga/tree/main/lamagraph-compiler). Улучшением этих частей предлагается заняться. Примеры возможных задач: поддержка алгебраических типов данных, реализация системы модулей, поддержка единиц измерения, разработка отображения различных конструкций языка в промежуточное представление.

Требования к студенту
  • Отличное знание языка Haskell (уметь читать и понимать исходный код [LamaGraph.Compiler] (https://github.com/Lamagraph/interaction-nets-in-fpga/tree/main/lamagraph-compiler))
  • Отличное знание основ лямбда-исчисления: стратегии редукции, кодирование разных "объектов" в лямбда-термах (нумералы Чёрча и т.д.)
  • Основы систем вывода типов.
  • Основы построения трансляторов: этапы (лексический/синтаксический анализы, оптимизации, и т.д.), внутренние структуры данных (дерево разбора, графы, и т.д.).
  • Знакомство с [Interaction Nets] (https://dl.acm.org/doi/pdf/10.1145/96709.96718) будет плюсом.
Уровень

2 курс, 3 курс, Бакалаврская ВКР


Руководитель

Григорьев Семен Вячеславович


Консультант

Grigorev Semyon


Источник

Кафедра системного программирования СПбГУ