Must read. 5 свежих англоязычных статей о Haskell
Новинки для Haskell-разработчиков, гайды по Template Haskell, тестированию и симуляции хеш-таблиц.
сайт LINGsCARS
Каждую неделю мы отбираем для вас несколько свежих материалов из англоязычного интернета. В этом выпуске — самое интересное о Haskell.
Плюсы Haskell и баттл с Python
Зачем читать: узнать о преимуществах языка и сравнить его с Python (ага, он же теперь лидер TIOBE, с чем ещё сравнивать?).
Где читать: на Medium.
Haskell — один из самых известных языков с ярко выраженной функциональной парадигмой программирования.
За что разработчики любят Haskell? Код в нём чистый и понятный, поддерживать и читать его достаточно просто, а писать — эффективно. Звучит слишком хорошо, чтобы быть правдой?
Но у автора статьи есть аргументы:
- Статическая типизация: благодаря ей многие баги видны уже в самом начале.
- Разнообразие инструментов: Haskell поддерживает алгебраические типы данных, классовый полиморфизм и многое другое.
- Продвинутая экосистема: в ней найдётся решение почти для любой проблемы.
- Высокая производительность: программа компилируется непосредственно в машинный код.
- Безопасность доступа к памяти: в Haskell управление памятью автоматическое, что помогает избежать ошибок.
- Чистые функции и неизменные данные — основа программирования на Haskell.
- Метапрограммирование: поддержка абстрактного дерева синтаксиса.
- Удобные библиотеки для работы со сложными сущностями и явлениями — например, параллелизмом.
Подробнее о том, как Haskell смотрится на фоне Python, какие у него преимущества и какие недостатки — в оригинальной статье.
Что нового в Haskell?
Зачем читать: узнать о новостях из мира Haskell и понять, чего ждать в скором будущем.
Где читать: на Medium.
Haskell Foundation — некоммерческая организация, которая занимается развитием языка Haskell. Авторы рассказывают, чего комьюнити добилось за последние месяцы, как устроена работа над языком и какими инициативами заняты участники фонда прямо сейчас.
Вот парочка новинок:
- Документация языка стала проще, понятнее и полезнее — и продолжает хорошеть. Кроме того, улучшений дождались HaskellWiki, Haddock и HaskellSchool.
- Поддержка Windows в Haskell долго оставляла желать лучшего, но её наконец-то исправили!
- Появился Performance book — новый проект, в котором эксперты и любители Haskell могут обменяться опытом. Создатели надеются, что он поможет разработчикам глубже понять, как устроен и работает язык.
- И ещё одна инициатива в комьюнити — подкаст про Haskell. Вышло уже несколько эпизодов.
Введение в Template Haskell
Зачем читать: чтобы работать эффективнее.
Где читать: на Functional Works.
Template Haskell — это набор функций и инструментов, которые добавляют шаблоны и упрощают работу с кодом. Он пригодится для автоматизации, ускорит написание типового кода и позволит выполнять программу прямо во время компиляции.
В гайде можно посмотреть на примеры его использования и понять, как он работает. А ещё там есть пара ссылок на материалы по теме для продвинутых разработчиков.
Haskell, где твои хеш-таблицы?
Зачем читать: если вам очень не хватает хеш-таблиц и хочется узнать, как воссоздать их в Haskell.
Где читать: на Medium.
В Haskell нет хеш-таблиц и словарей — и многим это кажется непривычным. Особенно тем, кто привык к JavaScript.
В статье — два примера того, как обойти это ограничение и симулировать подобную структуру в Haskell.
Первый способ — использовать списки и кортежи. Для этого нужно сначала создать пары значений в формате кортежей, а потом сохранить их в один список.
Второй — использовать модуль Data.Map. Суть тут примерно та же, только в Data.Map используются бинарные деревья.
Правда, оба варианта не так удобны, как классические хеш-таблицы. В первом случае время выполнения будет линейным, а во втором — логарифмическим, в то время как у хешей оно константное. Но если без хешей вам жизнь не мила — заглядывайте в статью.
Тестирование на основе свойств: QuickCheck
Зачем читать: разобраться в тестировании на основе свойств.
Где читать: на Medium.
В юнит-тестах частенько не учтены все значения — а иногда это критично. Здесь на помощь приходит тестирование на основе свойств. Оно хорошо тем, что вводные данные в нём генерируются автоматически. Следовательно, эффективность тестов выше, а у коварных багов меньше шансов остаться незамеченными.
Как раз для такого тестирования существует библиотека QuickCheck. А в статье — советы о том, как использовать её возможности на полную катушку. Например, одна из главных задач тестирования на основе свойств — повысить вероятность «неприятного» значения до максимума.
Что ещё интересного?
Если вам не хватило этих материалов про Haskell — вот ещё несколько интересностей на десерт.
- Статья о том, почему Haskell так любят в финтехе.
- Статья — введение в синтаксис Haskell для Python-разработчиков.
- Шпаргалка по модулям и спискам.
- Сравнение выразительности С# и Haskell.