Идиомы функционального программирования
Санкт-Петербург / осень 2015, посмотреть все семестры

Данный курс правильно было бы назвать «некоторые приёмы функционального программирования на статически типизированных языках». Так или иначе эти приемы основаны на использовании полиморфизма и функций высшего порядка и часто позволяют выразить то, что в других языках реализовывается ad hoc.

В качестве основного языка будет использован Haskell, хотя в большинстве случаев рассматриваемые приёмы могут быть перенесены в другие строго типизированные языки (например, Objective Caml).

Примерный (и неполный) перечень тем, которые предполагается затронуть:

  • Функции с переменным числом аргументов («variadic functions»).
  • Однородная обработка кортежей.
  • Вычисления на уровне типов («type-level computations»).
  • Расширяемые типы данных («expression problem»).

Некоторая литература:

  1. Olivier Danvy. Functional Unparsing // J. Funct. Program., 1998, Vol. 8, №6, P. 621—625.
  2. Oleg Kiselyov. Polyvariadic functions and keyword arguments: pattern-matching on the type of the context.
  3. Daniel Fridlender, Mia Indrika. Do We Need Dependent Types? // J. Funct. Program., 2001, Vol. 10, P. 409—415.
  4. Oleg Kiselyov, Ralf Lammel, Keean Schupke. Strongly Typed Heterogeneous Collections // Proceedings of the 2004 ACM SIGPLAN Workshop on Haskell, 2004, P. 96—107.
  5. Arthur I.Baars, S.Doaitse Swierstra. Typing Dynamic Typing // Proceedings of the 7th ACM SIGPLAN International Conference on Functional Programming, 2002, P. 157--166.
  6. Wouter Swierstra. Data Types a la Carte // J. Funct. Program., 2008, Vol. 18, № 4, P. 423—436.
Дата и время Название Место Материалы
11 сентября
20:00–21:20
Функции с переменным числом аргументов, лекция Таймс, ауд. с белыми досками файлы
18 сентября
20:00–21:20
Функции с переменным числом аргументов - разбор заданий, "каноническое" решение с продолжениями, семинар Таймс, ауд. с белыми досками Нет
25 сентября
20:00–21:20
Функции с переменным числом аргументов без типовой аннотации. Однородная обработка кортежей., лекция Таймс, ауд. с белыми досками файлы
02 октября
20:00–21:20
Представление натуральных чисел в форме Пеано, примеры использования., лекция Таймс, ауд. с белыми досками Нет
09 октября
20:00–21:20
Overlapping instances; Экзистенциальные типы., лекция Таймс, ауд. с белыми досками Нет
16 октября
20:00–21:20
Эквивалентность типов, лекция Таймс, ауд. с белыми досками Нет
23 октября
20:00–21:20
Динамическое представление типов, лекция Таймс, ауд. с белыми досками Нет
30 октября
20:00–21:20
Динамическое приведение типов., лекция Таймс, ауд. с белыми досками Нет
06 ноября
20:00–21:20
Рекурсивные типы и обобщенные катаморфизмы., лекция Таймс, ауд. с белыми досками Нет
13 ноября
08:00–09:20
Занятие, лекция Таймс, ауд. с белыми досками Нет
20 ноября
08:00–09:20
Занятие, лекция Таймс, ауд. с белыми досками Нет
27 ноября
08:00–09:20
Занятие, лекция Таймс, ауд. с белыми досками Нет
04 декабря
20:00–21:20
Занятие, лекция Таймс, ауд. с белыми досками Нет
11 декабря
20:00–21:20
Занятие, лекция Таймс, ауд. с белыми досками Нет