Большинство языков программирования, несмотря на различия в синтаксисе, количестве типов переменных и тд., в целом походи логикой написания и исполнения, да и программисту на каком-нибудь C++ в целом не будет затруднительно понять логику кода на JS или php. Другое дело — Haskell. Разобраться в нём без подготовки будет очень сложно. В чём же проблема?
Перечисленные ранее языки объединяет одно — они относятся к императивным языкам. Их команды выполняются одна за другой и общая логика кода схожа. Haskell — функциональный язык, а это уже совершенно другое дело.
Что такое функциональный язык?
Суть функционального языка в том, что все структуры и весь код в нём — функции. К тому же, у таких языков одно важное правило — при одинаковом вводе, вывод функции тоже будет одинаковый при каждом вызове. Подобная особенность всегда очень ценится программистами, ведь это повышает качество и безопасность функций.
Вернёмся к Haskell
В данном языке вся логика программы основывается на функциях. Тут нет ни while, ни for, ни какого-либо ещё специального синтаксиса для итераций. Хочешь несколько раз прогнать код по кругу? Пиши этот код в отдельной функции, которая будет вызывать саму себя, если ещё не пора перестать повторять. Хочешь по очереди вывести объекты в списке? Вручную отслеживай какой по счёту объект нужно выводить и каждый раз передавай номер следующего объекта этой же функции.
Вообще, Haskell по праву считается одним из сложнейших языков программирования, а пишут на нём даже не ради результата, а ради того, чтобы понять, как это реализовать на Haskell.
Также у Haskell есть интересная особенность — он не станет искать результат вычислений, пока он не пригодится. Это даёт возможность для множества нетривиальных решений, например, для работы с бесконечными списками.
По итогу, Haskell — это язык, на котором люди оттачивают своё мастерство в поиске нестандартных решений, а не для создания реальных программ. Если хотите что-то подобное — учите Haskell!
Подписывайтесь на канал и ставьте лайки!