# Лабораторная работа 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)