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