Цикл статей адресован читателю, знакомому с программированием, но не знакомому с функциональным подходом. Первые статьи будут затрагивать базовые понятия. Далее мы перейдем к особенностям синтаксиса и семантики Haskell и практическим вопросам.
Во второй статье «Основные типы и классы» мы приведем начальные сведения о типах и классах в Haskell.
В третьей статье «Определение функций» мы рассмотрим конструкции, которые используются при определении функций, а также специальный синтаксис для списковых выражений.
Цикл статей адресован читателю, знакомому с программированием, но не знакомому с функциональным подходом. Первые статьи будут затрагивать базовые понятия. Далее мы перейдем к особенностям синтаксиса и семантики Haskell и практическим вопросам. В первой статье мы вкратце расскажем о функциональном программировании, полезных источниках информации, а также реализациях Haskell.
Тихо и незаметно вышел в свет очередной релиз компилятора GHC ленивого функционального языка Haskell. К существенным изменениям по сравнению с предыдущим релизом следует отнести:
Существенно улучшена поддержка параллельного выполнения.
Разработана графическая утилита ThreadScope, позволяющая эффективно отлаживать параллельные приложения на Haskell.
Добавлена поддержка динамического связывания под Linux; ожидаемым результатом является значительное уменьшение размеров бинарных файлов. Отмечается, что это также позволит создавать на Haskell плагины, которые могут быть использованы из сторонних приложений.
В библиотеки ввода-вывода добавлена полная поддержка Unicode, соответственно работа с файлами, содержащими не-ASCII символы, теперь не требует дополнительных усилий со стороны программиста.
Значительно улучшена система пакетов; каждый установленный пакет отныне однозначно идентифицируется уникальным идентификатором, основанным на предоставляемом ABI - что позволяет оптимизировать установку пакетов, а так так же избежать ряда ошибок, связанных с нарушениями зависмостей между ними.
Множество мелких изменений языка, затрагивающих работу с типами данных (GADT'ы, Type Families), системой метапрограммирования Template Haskell, и рекурсивной do-нотацией.
GHC написан на Haskell, является продуктом с открытым исходным кодом, распространяется по BSD-like лицензии.
В списке рассылки появилось сообщение от Simon Marlow, где объявляется о новой ревизии языка Haskell — Haskell 2010.
Расширения, которые вошли в новый стандарт:
DoAndIfThenElse
Синтаксис if-then-else будет выглядеть как «exp -> if exp1 [;] then exp2 [;] else exp3».
«then» и «else» можно будет располагать на одном уровне.
HierarchicalModules
Иерархическая структура модулей наконец-то войдёт в официальный стандарт.
EmptyDataDeclarations
Конструкторы типов без конструкторов данных (это типы с единственным значением: _|_).
FixityResolution
Изменения в синтаксическом разборе операторов с приоритетами. Важно только для официального отчёта.
ForeignFunctionInterface
Давно использующийся FFI тоже войдёт в Haskell2010.
LineCommentSyntax
Небольшое исправление, связанное со строчными комментариями.
PatternGuards
Сопоставление с образцами в охраняющих выражениях.
RelaxedDependencyAnalysis
Ослабленный анализ зависимостей: при выводе типов игнорируются ссылки на связанные переменные с явно указанными типами. Monomorphism restriction is gone.
LanguagePragma
В отчёте будет упоминаться прагма «LANGUAGE» с расширениями: DoAndIfThenElse, HierarchicalModules, FixityResolution, PatternGuards, NoNPlusKPatterns, RelaxedDependencyAnalysis, LineCommentSyntax, EmptyDataDeclarations, LanguagePragma и ForeignFunctionInterface.
Реализация, поддерживающая прагмы, должна обрабатывать «{-# LANGUAGE Haskell2010 -#}» (включает все вышеперечисленые расширения).
NoNPlusKPatterns
Убран вариант синтаксиса при сопоставлении с образцом вида «n + k» для натуральных чисел.
Вышла новая версия фреймового оконного менеджера xmonad. Со времени релиза 0.8.1 прошло 9 месяцев, было сделано больше 3000 коммитов в darcs-репозиторий. Также доступна новая версия xmonad-contrib - набора расширений для xmonad.
Основные изменения:
Actions.SpawnOn: окна появляются именно на том рабочем столе, где были запущены. Особенно полезно для тех приложений, которые долго стартуют (Firefox, OpenOffice).
Улучшена интеграция со статусными строками xmobar/dzen.
Для изменения фокуса уже не требуется дополнительный клик.
Новый флаг командной строки -–restart для перезапуска текущего процеса.
Поддержка многомодульных конфигурационных файлов.
Поддержка определяемой пользователем обработки событий X.
Bluetile - новый оконный менеджер, форк xmonad. Основная цель проекта - предоставить преимущества парадигмы неперекрывающихся окон обычным пользователям, не желающим неделями настраивать свой WM, да ещё и изучать для этого новый язык программирования. Поэтому разработчик постарался сделать bluetile максимально пригодным к использованию «из коробки», что отменяет необходимость в его ручном конфигурировании.
Список особенностей:
Комбинированый подход: Поддерживаются плавающие и мозаичные компоновки расположения окон
Поддержка многомониторных конфигураций
Все возможности по управлению окнами доступны как с клавиатуры, так и с мыши
Возможность сворачивания/разворачивания окон в любой компоновке
Поддержка интеграции со средой GNOME
Инструкции по установке оконного менеджера можно найти на сайте проекта. Исходные тексты расположены по адресу http://code.haskell.org/bluetile/
Utrecht Haskell Compiler (UHC) - компилятор языка Haskell, поддерживающий практически весь стандарт Haskell98 плюс некоторые экспериментальные расширения; является развитием проекта EHC (Essential Haskell Compiler) университета Утрехта.
Специфические возможности UHC:
Пять различных бекэндов, включая интерпретаторы байткода (Java, CLR); в процессе разработки бекэнд к LLVM.
Экспериментальные расширения языка, некоторые из которых прежде не были нигде реализованы.
Реализация с использованием атрибутных грамматик и прочих высокоуровневых средств синтаксически управляемой трансляции.
Возможность экспериментировать с различными вариантами языка благодаря аспектно-ориентированному устройству компилятора.
Haskell.org и Sun Microsystems анонсировали совместный проект по использованию возможностей новейших высокопроизводительных систем на базе многоядерных процессоров OpenSPARC с применением языка Haskell. Sun выделила сообществу Haskell мощный восьмиядерный SPARC Enterprise T5120 Server и 10 000 долларов на развитие Haskell на платформе SPARC. Цель проекта - оптимизировать генерацию машинного кода в GHC на процессорах Sun и улучшить бенчмарки, связанные с параллельными вычислениями.
Библиотека Functional Java и новые возможности параллелизации в JVM 7 позволяют ускорить выполнение параллельных вычислений на платформе Java. Например, вычисление числа Фиббоначчи от 35 сокращается с 45 до 7 секунд, т.е. более чем в 6 раз!
Тихо и незаметно обновился tiling-менеджер окон xmonad, отличительной особенностью которого является то, что он написан на языке функционального программирования Haskell и имеет приятные особенности, о которых можно подробнее прочитать на сайте проекта. В новой версии исправлены важные ошибки и добавлены новые возможности, поэтому разработчики рекомендуют обновиться.