|
|
# Лабораторная работа 5: Функциональное программирование на F#
|
|
|
|
|
|
## Описание
|
|
|
|
|
|
Этот проект содержит набор программ, демонстрирующих основные концепции функционального программирования на языке F#. Каждая программа представляет собой отдельный пример, иллюстрирующий определенную технику или подход.
|
|
|
|
|
|
## Примеры программ
|
|
|
|
|
|
1. **HelloWorld** - Простой пример вывода "Привет, мир!" на F#
|
|
|
2. **QuadraticEquation** - Решение квадратного уравнения с использованием сопоставления с образцом
|
|
|
3. **CircleAndCylinder** - Расчет площади круга и объема цилиндра, демонстрирует суперпозицию и каррирование
|
|
|
4. **NumberOperations** - Вычисление суммы цифр числа с использованием рекурсии
|
|
|
5. **RecursionTypes** - Демонстрация различных типов рекурсии (вверх, вниз, хвостовая)
|
|
|
6. **FunctionFactory** - Создание функций во время выполнения (функции как значения)
|
|
|
7. **NumberTraversal** - Обход цифр числа с различными операциями (сумма, произведение, минимум, максимум)
|
|
|
8. **LambdaTraversal** - Использование лямбда-выражений для обработки цифр числа
|
|
|
9. **ConditionalTraversal** - Условный обход цифр числа с использованием предикатов
|
|
|
10. **NumberExamples** - Практические примеры работы с цифрами числа и композицией условий
|
|
|
|
|
|
## Запуск программ
|
|
|
|
|
|
### Локально
|
|
|
|
|
|
Для запуска отдельной программы:
|
|
|
|
|
|
```bash
|
|
|
cd "lab 5/<название_программы>"
|
|
|
dotnet run
|
|
|
```
|
|
|
|
|
|
Например:
|
|
|
```bash
|
|
|
cd "lab 5/HelloWorld"
|
|
|
dotnet run
|
|
|
```
|
|
|
|
|
|
### Через Docker
|
|
|
|
|
|
```bash
|
|
|
make lab5-docker-build
|
|
|
make lab5-docker-run
|
|
|
```
|
|
|
|
|
|
## Требования
|
|
|
|
|
|
- .NET 8.0 SDK или выше
|
|
|
- Docker (опционально)
|
|
|
|
|
|
## Задачи лабораторной работы
|
|
|
|
|
|
- Изучение основ функционального программирования на F#
|
|
|
- Применение рекурсии и хвостовой рекурсии
|
|
|
- Работа с функциями высшего порядка
|
|
|
- Использование лямбда-выражений
|
|
|
- Понимание каррирования и частичного применения функций
|
|
|
- Применение сопоставления с образцом (pattern matching)
|