Haskell

haskell логотип 2023

Haskell – продвинутый, чисто функциональный язык программирования.

Особенности

Статическая типизация

Каждое выражение в Haskell имеет тип, который определяется во время компиляции. Все типы, составленные вместе при применении функций, должны совпадать. Если это не так, программа будет отвергнута компилятором. Типы становятся не только формой гарантии, но и языком для выражения построения программ.

Чисто функциональный

Каждая функция в Haskell является функцией в математическом смысле (т.е. «чистой»). Даже операции ввода-вывода с побочными эффектами - это всего лишь описание того, что нужно сделать, произведенное «чистым» кодом. Здесь нет утверждений или инструкций, только выражения, которые не могут изменять переменные (локальные или глобальные) или получать доступ к состоянию, такому как время или случайные числа.

Вывод типов

В программе на Haskell не нужно явно прописывать каждый тип. Типы будут выводиться путем двунаправленного объединения всех типов. Тем не менее, вы можете написать типы, если хотите, или попросить компилятор написать их за вас для удобной документации.

Одновременный

Haskell хорошо подходит для параллельного программирования благодаря явной обработке эффектов. Его флагманский компилятор, GHC, поставляется с высокопроизводительным параллельным сборщиком мусора и легкой библиотекой параллелизма, содержащей ряд полезных примитивов и абстракций параллелизма.

Ленивый

Функции не оценивают свои аргументы. Это означает, что программы могут очень хорошо компоноваться, с возможностью писать управляющие конструкции (такие как if/else), просто написав обычные функции. Чистота кода Haskell позволяет легко объединять цепочки функций, что дает выигрыш в производительности.

Пакеты

Вклад в Haskell с открытым исходным кодом очень активен: на публичных серверах пакетов доступен широкий спектр пакетов.

Источники