А вы знаете, где используется Haskell?
Введение
Haskell — чистый функциональный язык программирования общего назначения. Среди его отличительных особенностей можно выделить строгую статическую типизацию, ленивые вычисления, алгебраические типы данных и серьёзную теоретическую основу. Это относительно молодой язык, он появился в 1990 году, но уже оказал значительное влияние на другие языки и на теорию языков программирования в целом.
Сегодня мы приведём примеры прикладного использования из различных индустриальных областей.

Что и где написано на Haskell?
- Пожалуй, самый гуглящийся и известный пример использования Haskell в крупных компаниях это спам-фильтры в
FacebookMeta. Для фильтрации сообщений, содержащих спам, ссылки на потенциально вредоносное ПО и фишинговые атаки, используется система Sigma, которая в 2015 году была переписана на Haskell. Выбор языка основывается в том числе на требованиях к производительности, необходимости в чистых функциях и статической типизации, а также возможности интерактивной разработки. Под капотом активно используется фреймворк Haxl, который компания выложила в открытый доступ. Больше подробностей о процессе разработки и технических деталях можно найти в соответствующем посте в блоге компании: https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/ - Eaton — компания, производящая электротехническое и гидравлическое оборудование, компоненты для авиационной и автомобильной промышленности. В компании используют Haskell для повседневных задач вроде скриптинга, симуляции железа, инструментов для удалённого управления системами транспортного средства и т.д. Но самое интересное, что они доверили управление гидравликой коду, написанному на DSL Atom, который также реализовали на Haskell. Atom предназначен для разработки систем жёсткого реального времени и позволяет декларативно описывать правила смены состояний системы. Во время компиляции выполняется планирование задач, поэтому результирующий код имеет детерминированное время выполнение и константное потребление памяти. Это значительно упрощает верификацию полученного кода и в целом повышает безопасность системы, что, конечно, очень важно для этой предметной области. Более подробно про всё это можно прочитать на слайдах и в репозитории Atom.
- Теперь перенесёмся в совершенно другую область, а именно в мир музыки. Сервис Chordify позволяет преобразовывать музыку с YouTube, soundCloud и т.д. в аккорды, чтобы вы сами научились играть свои любимые песни. Haskell применяется по большей части непосредственно в процессе распознавания, для этого разработчики используют библиотеку HarmTrace, которая анализирует последовательности музыкальных гармоник.

- Лаборатория Касперского разрабатывает собственную защищённую операционную систему KasperskyOS для подключенных к интернету встраиваемых систем. Разумеется, у этой ОС особые требования к надёжности и кибербезопасности. Для компилятора системы безопасности и создания вспомогательных средств разработки команда KasperskyOS активно использует Haskell. Конфигурация безопасности описывается на специальном DSL, который затем компилируется в C. Как видим, Haskell в очередной раз доказал свою пользу, когда дело касается безопасности.
- Часть внутренних инструментов для automotive-разработки в Tesla написана на Haskell, что подтверждается периодическим появлением вакансий. Насколько я смогла понять из описаний вакансий, Haskell используется для промежуточного высокоуровневого представления внутренних систем, из которого генерируются код на C, документация и, возможно, что-то ещё.

- BIOCAD — одна из крупнейших биотехнологических компаний, базирующаяся в России. В компании осуществляется полный цикл создания медикаментов, вплоть до массового производства и маркетинга. BIOCAD разрабатывает собственные внутренние сервисы для обработки и хранения данных при разработке препаратов. Бэкенд этих сервисов написан на Haskell, в нём используется графовая база данных Neo4j, для которой компания разработала и выложила в открытый доступ драйвер Hasbolt.
- Haskell занял свою нишу в разработке блокчейнов и криптовалюты. Наверное, большинство вакансий на Haskell, которые я встречала, были из этой области. Из самых известных, пожалуй, стоит упомянуть Cardano. Основная причина популярности Haskell в этой области — снова безопасность! Более подробно про это можно почитать в посте FPComplete.
- Если блокчейны кажутся слишком скучной, серьезной или “нечеловечной” областью, то расскажу вам о Co–Star — астрологическом приложении для персонализированных гороскопов и ретроградных Меркуриев. Их бэкенд написан на Haskell, и разработчики рассказали на сайте приложения, почему выбрали именно этот язык: https://www.costarastrology.com/why-haskell/

- Бэкенд мессенджера Wire написан на Haskell, причём серверный код есть в открытом доступе в репозитории компании, и к нему написана подробная документация.
- Американский музей естественной истории использует Haskell для исследования филогенетических графов, отражающих эволюционные взаимосвязи между различными видами. Код этого проекта также доступен на GitHub.
Заключение
Список примеров для поста составлялся с целью показать разнообразие областей применения, и, конечно, многое осталось за кадром. Более полную информацию о том, в каких компаниях и отраслях используется Haskell, можно найти здесь: