Содержание курса
1. О функциях
6 уроков
13
13
0м
0
Закрытый
1.1
Определение функции
↗
2
2
-
0
Закрытый
1.2
Возвращаемое значение
↗
2
2
-
0
Закрытый
1.3
Передача аргументов
↗
3
3
-
0
Закрытый
1.4
Перегрузка функций
↗
2
2
-
0
Закрытый
1.5
Inline и ODR
↗
2
2
-
0
Закрытый
1.6
Области видимости
↗
2
2
-
0
2. Функции как значение
6 уроков
13
13
0м
0
Закрытый
2.1
Указатели на функции
↗
3
3
-
0
Закрытый
2.2
std::function
↗
2
2
-
0
Закрытый
2.3
Функциональные объекты
↗
2
2
-
0
Закрытый
2.4
Шаблонные параметры-функции
↗
2
2
-
0
Закрытый
2.5
auto и вывод типа возвращаемого значения
↗
2
2
-
0
Закрытый
2.6
Практика
↗
2
2
-
0
3. Лямбда-выражения
6 уроков
12
12
0м
0
Закрытый
3.1
Синтаксис
↗
2
2
-
0
Закрытый
3.2
Захват переменных
↗
2
2
-
0
Закрытый
3.3
mutable-лямбды
↗
2
2
-
0
Закрытый
3.4
Время жизни и dangling capture
↗
2
2
-
0
Закрытый
3.5
Generic lambdas
↗
2
2
-
0
Закрытый
3.6
Практика
↗
2
2
-
0
4. Чистые функции и неизменяемость
7 уроков
16
15
0м
0
Закрытый
4.1
Что такое чистая функция
↗
2
2
-
0
Закрытый
4.2
Побочные эффекты
↗
2
2
-
0
Закрытый
4.3
Концепция неизменяемых данных
↗
2
2
-
0
Закрытый
4.4
const как инструмент FP
↗
2
2
-
0
Закрытый
4.5
Value semantics
↗
2
2
-
0
Закрытый
4.6
Copy vs Move и их роль
↗
3
3
-
0
Закрытый
4.7
Практика
↗
3
2
-
0
5. Алгоритмы вместо циклов
6 уроков
12
12
0м
0
Закрытый
5.1
Идея декларативности
↗
2
2
-
0
Закрытый
5.2
std::for_each, transform, count_if
↗
2
2
-
0
Закрытый
5.3
min/max/minmax
↗
2
2
-
0
Закрытый
5.4
partition и remove-идиома
↗
2
2
-
0
Закрытый
5.5
reduce / accumulate
↗
2
2
-
0
Закрытый
5.6
Практика
↗
2
2
-
0
6. Функции высшего порядка
6 уроков
12
12
0м
0
Закрытый
6.1
Передача функций
↗
2
2
-
0
Закрытый
6.2
Возврат функций
↗
2
2
-
0
Закрытый
6.3
Частичное применение
↗
2
2
-
0
Закрытый
6.4
std::bind и почему его не любят
↗
2
2
-
0
Закрытый
6.5
Композиция функций
↗
2
2
-
0
Закрытый
6.6
Практика
↗
2
2
-
0
7. Ranges и ленивые вычисления
7 уроков
14
14
0м
0
Закрытый
7.1
Проблема промежуточных контейнеров
↗
2
2
-
0
Закрытый
7.2
std::ranges
↗
2
2
-
0
Закрытый
7.3
Views
↗
2
2
-
0
Закрытый
7.4
Ленивость vs eager
↗
2
2
-
0
Закрытый
7.5
Dangling views
↗
2
2
-
0
Закрытый
7.6
Пайплайны обработки данных
↗
2
2
-
0
Закрытый
7.7
Практика
↗
2
2
-
0
8. Функциональная композиция
5 уроков
10
10
0м
0
Закрытый
8.1
Pipe-style обработка
↗
2
2
-
0
Закрытый
8.2
Создание собственных адаптеров
↗
2
2
-
0
Закрытый
8.3
Каррирование
↗
2
2
-
0
Закрытый
8.4
Compile-time композиция
↗
2
2
-
0
Закрытый
8.5
Практика
↗
2
2
-
0
9. Error handling в функциональном стиле
6 уроков
12
12
0м
0
Закрытый
9.1
Почему исключения плохо сочетаются с FP
↗
2
2
-
0
Закрытый
9.2
std::optional
↗
2
2
-
0
Закрытый
9.3
std::expected
↗
2
2
-
0
Закрытый
9.4
Монадический стиль обработки
↗
2
2
-
0
Закрытый
9.5
map / and_then / transform_error
↗
2
2
-
0
Закрытый
9.6
Практика
↗
2
2
-
0
10. Локализация побочных эффектов
5 уроков
10
10
0м
0
Закрытый
10.1
Разделение чистой логики и IO
↗
2
2
-
0
Закрытый
10.2
Dependency injection
↗
2
2
-
0
Закрытый
10.3
Тестирование чистых функций
↗
2
2
-
0
Закрытый
10.4
Императивная оболочка + функциональное ядро
↗
2
2
-
0
Закрытый
10.5
Практика
↗
2
2
-
0
11. Границы FP в C++
4 урока
8
8
0м
0
Закрытый
11.1
Когда FP усложняет код
↗
2
2
-
0
Закрытый
11.2
Производительность и cost model
↗
2
2
-
0
Закрытый
11.3
Читаемость vs абстракция
↗
2
2
-
0
Закрытый
11.4
Баланс FP и OOP
↗
2
2
-
0
12. Итоговые задания
2 урока
4
2
0м
0
Закрытый
12.1
Финальные задачи
↗
2
1
-
0
Закрытый
12.2
Рефакторинг
↗
2
1
-
0
13. Больше практики
1 урок
1
1
0м
0
Закрытый
13.1
↗
1
1
-
0