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

Ссылки

  1. haskell.org для установки
  2. wiki.haskell.org много материалов для изучения

Учебники

  1. Кубенский А.А. Функциональное программирование

для доступа к сайту издательства Юрайт перейдите по ссылке http://cufts.library.spbu.ru/CRDB/SPBGU/resource/306/goto и введите свои университетские логин и пароль.

Лекции

Что мы успели изучить на двух первых лекциях:

  1. Базовые типы данных Int, Integer, Char, Float, Double, Bool
  2. Списки [любой тип], String == [Char]. Конструкторы списка : (приписывание элемента в начало) и [] (пустой список).
  3. Синтаксис определения функций, рекурсия, хвостовая рекурсия.
  4. Описание типов функций
  5. Сопоставление с образцом: при описании функций и в операторое case. Guards
  6. Условное выражение if
  7. Выражения where и let.
  8. Инфиксная и префиксная запись функций.
  9. Лямбда выражения: \x -> x + 1
  10. Параметрический полиморфизм: типовые переменные в описании типа, например, head :: [a] -> a
  11. Действия со списками http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-List.html
  12. Функции высшего порядка: например map f list и filter pred list
  13. Диапазоны: [1..10], [1,3..10], [1..], [1,3..]

На третьей лекции мы обсудили

  1. Карринг и частичное применение функций.
  2. Функции foldl и foldr

Четвертая лекция: Функции . и $, Алгебраические типы данных

Пятая лекция: Работа с отсутствующими значениями, классы типов

Тексты четвертой и пятой лекций

Вы можете найти необходимые знания, например, в этом учебнике: Haskell Wikibook. Читайте разделы в Haskell Basics: Variables and functions, Truth values, Type basics, Lists and tuples, Next steps. В разделе Elementary Haskell: всё без Types declarations и без разделов о чем-то непонятном, что мы еще не прошли.

Задачи

  1. Первая часть