Функциональное программирование
Ссылки
- haskell.org для установки
- wiki.haskell.org много материалов для изучения
Учебники
для доступа к сайту издательства Юрайт перейдите по ссылке http://cufts.library.spbu.ru/CRDB/SPBGU/resource/306/goto и введите свои университетские логин и пароль.
Лекции
Что мы успели изучить на двух первых лекциях:
- Базовые типы данных Int, Integer, Char, Float, Double, Bool
- Списки [любой тип], String == [Char]. Конструкторы списка
:
(приписывание элемента в начало) и[]
(пустой список). - Синтаксис определения функций, рекурсия, хвостовая рекурсия.
- Описание типов функций
- Сопоставление с образцом: при описании функций и в операторое
case
. Guards - Условное выражение
if
- Выражения
where
иlet
. - Инфиксная и префиксная запись функций.
- Лямбда выражения:
\x -> x + 1
- Параметрический полиморфизм: типовые переменные в описании типа, например,
head :: [a] -> a
- Действия со списками http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-List.html
- Функции высшего порядка: например
map f list
иfilter pred list
- Диапазоны:
[1..10]
,[1,3..10]
,[1..]
,[1,3..]
На третьей лекции мы обсудили
- Карринг и частичное применение функций.
- Функции foldl и foldr
Четвертая лекция: Функции .
и $
, Алгебраические типы данных
Пятая лекция: Работа с отсутствующими значениями, классы типов
Тексты четвертой и пятой лекций
Вы можете найти необходимые знания, например, в этом учебнике: Haskell Wikibook.
Читайте разделы в Haskell Basics: Variables and functions
, Truth values
, Type basics
, Lists and tuples
, Next steps
.
В разделе Elementary Haskell: всё без Types declarations
и без разделов о чем-то непонятном, что мы еще не прошли.