====== Функциональное программирование ====== Изучаем язык HASKELL - чистый функциональный язык программирования со строгими типами данных, который также промышленно востребован. **Цель освоения** материала - научиться представлять программу как суперпозицию функций, освоить рекурсию, типы данных с тегированием. Изучение функционального программирования позволяет более профессионально проектировать программы на языках класса Java, Python, JavaScript, C, C++, C#. ====== Перечень лабораторных работ ====== Лабы оформлять в виде папок с файлами на гитхабе, ссылку и прогресс записывать [[https://docs.google.com/spreadsheets/d/1cfdQysWj_-GmCGgdXpkjYOITvuFH8PIK4w0fqCgl1h4/edit?usp=sharing|сюда]]: сделал лабу - поставь "+" в ячейку в столбце по номеру (теме) лабы. Не забудь ссылку на проект [[https://github.com|Гитхаб]]. На каждую лабу не надо делать ссылку. Я найду. - Освоение типов данных Haskell. **задача** - разработать программу решения квадратного уравнения - функция от трех аргументов a,b,c, возвращающая тегированное значение в зависимости от комбинации входных параметров: Два значени, Четное значение, Нет решений. - Рекурсивная обработка и порождение списков * мин две задачи из [[https://wiki.haskell.org/99_questions/1_to_10|этого списка]] * мин две задачи из [[https://wiki.haskell.org/99_questions/11_to_20|этого списка]] * мин две задачи из [[https://wiki.haskell.org/99_questions/21_to_30|этого списка]] - Обработка структур * мин одна задача из [[https://wiki.haskell.org/99_questions/54A_to_60|этого списка]] * мин одна задача из [[https://wiki.haskell.org/99_questions/61_to_69|этого списка]] или [[https://wiki.haskell.org/99_questions/70B_to_73|этого]] * мин одна задача из [[https://wiki.haskell.org/99_questions/80_to_89|этого списка]] - Функции второго порядка * Решить пару задач из списка второй лабы при помощи функций второго порядка * Реализовать функцию второго порядка - Монады, Ввов-двывод * Реализовать решение двух задач из списка второй лабы при помощи монад. * Реализовать монаду, сохраняющую результат предыдущей лабы в файл, исходные данные берутся так же их файла. Основной ресурс с заданиями - https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems