Spec-Zone.ru › Haskell 9

1. Введение

Это руководство по использованию Glasgow Haskell Compiler (GHC): интерактивной и пакетной системы компиляции для языка Haskell 2010.

GHC состоит из двух основных компонентов: интерактивного интерпретатора Haskell (также известного как GHCi), описанного в Использование GHCi, и пакетного компилятора, описанного в Использование GHC. На самом деле, GHC представляет собой одну программу, которая запускается с различными параметрами, предоставляя либо интерактивную, либо пакетную систему.

Пакетный компилятор может использоваться вместе с GHCi: скомпилированные модули могут быть загружены в интерактивную сессию и использоваться так же, как интерпретируемый код, и, фактически, при использовании GHCi большая часть кода библиотеки предварительно скомпилирована. Это означает, что вы получаете лучшее из обоих миров: быстро скомпилированный код библиотек и быстрая компиляция частей вашего приложения, над которыми активно ведётся работа.

GHC поддерживает множество расширений языка, включая конкурентность, интерфейс внешних функций, исключения, расширения системы типов, такие как многопараметрические классы типов, локальные универсальные и экзистенциальные квантификации, функциональные зависимости, отсортированные переменные типов и явные не упакованные типы. Всё это описано в Расширения языка.

GHC имеет комплексный оптимизатор, поэтому, когда вы хотите действительно быстро получить результат (и у вас есть время) GHC может сгенерировать довольно быстрый код. В качестве альтернативы, по умолчанию компиляция выполняется максимально быстро, не прилагая чрезмерных усилий для оптимизации сгенерированного кода (хотя GHC, вероятно, нельзя назвать быстрым компилятором :-).

Система профилирования GHC поддерживает «стеки центров затрат»: способ увидеть профиль программы Haskell в структуре, похожей на график вызовов. Подробнее см. в Профилирование.

GHC поставляется с рядом библиотек. Они описаны в отдельной документации.

1.1. Получение GHC

Перейдите на главную страницу GHC и перейдите по ссылке «загрузка», чтобы загрузить GHC для вашей платформы.

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

1.2. Метаинформация: веб-сайты, списки рассылки и т. д.

В глобальной сети есть несколько URL-адресов, которые могут быть полезны:

  • Главная страница GHC
  • Главная страница разработчиков GHC (документация для разработчиков, вики и система отслеживания ошибок)

Мы ведём следующие списки рассылки по GHC. Мы рекомендуем вам присоединиться, если это необходимо.

glasgow-haskell-users

Этот список предназначен для общения пользователей GHC между собой. Если у вас есть конкретный вопрос по GHC, пожалуйста, сначала ознакомьтесь с часто задаваемыми вопросами.

Подписчики могут публиковать сообщения в список, отправив их на glasgow-haskell-users@haskell.org. Дополнительную информацию можно найти на странице Mailman.

ghc-devs

Разработчики GHC общаются здесь. Если вы работаете с API GHC или у вас есть вопрос о реализации GHC, не стесняйтесь задавать его.

Подписчики могут публиковать сообщения в список, отправив их на ghc-devs@haskell.org. Дополнительную информацию можно найти на странице Mailman.

Есть несколько других списков рассылки, связанных с Haskell и GHC, обслуживаемых www.haskell.org. Обратитесь к https://www.haskell.org/mailman/listinfo/ для получения полного списка.

1.3. Отчёт о проблемах в GHC

Glasgow Haskell — это изменяющаяся система, поэтому в ней неизбежно будут ошибки. Если вы обнаружили одну, см. эту страницу вики, чтобы узнать, как сообщить об этом.

1.4. Политика нумерации версий GHC

Начиная с версии 6.8 GHC, мы приняли следующую политику нумерации версий GHC:

Стабильные ветви пронумерованы x.y, где ⟨y⟩ — чётное число. Выпуски на стабильной ветви x.y пронумерованы x.y.z, где ⟨z⟩ (>= 1) — номер патча. Патчи — это только исправления ошибок и никогда не изменяют интерфейс программиста для любого кода, предоставленного системой. Однако, если вы установите новый патч поверх старого, вам потребуется перекомпилировать любой код, скомпилированный со старыми библиотеками.

Значение __GLASGOW_HASKELL__ (см. Параметры, влияющие на препроцессор C) для основной версии x.y.z — это целое число ⟨xyy⟩ (если ⟨y⟩ — однозначное число, то добавляется ведущий ноль, например, в версии 6.8.2 GHC мы имеем __GLASGOW_HASKELL__==608).

Мы можем делать моментальные снимки текущей стабильной ветви для загрузки, а самые последние исходные файлы доступны в репозиториях Git.

Стабильные моментальные снимки названы x.y.z.YYYYMMDD, где YYYYMMDD — дата исходных файлов, из которых был создан снимок, а x.y.z+1 — следующий выпуск, который будет создан на этой ветке. Например, 6.8.1.20040225 будет снимком ветки 6.8 во время разработки 6.8.2.

Нестабильные моментальные снимки названы x.y.YYYYMMDD, где YYYYMMDD — дата исходных файлов, из которых был создан снимок. Например, 6.7.20040225 будет снимком HEAD перед созданием ветки 6.8.

Значение __GLASGOW_HASKELL__ для моментального снимка — это целое число ⟨xyy⟩. Однако вы никогда не должны писать условный код, который проверяет это значение: поскольку интерфейсы меняются ежедневно, и у нас нет более мелкого разбиения в значениях __GLASGOW_HASKELL__, вы должны применять условную компиляцию только с предикатами, которые проверяют, равно ли __GLASGOW_HASKELL__ определённой основной версии, позднее или раньше её.

Номер версии вашей копии GHC можно найти, вызвав ghc с флагом --version (см. Параметры отображения информации).

Версию компилятора можно проверить в скомпилированном коде с помощью макроса препроцессора MIN_VERSION_GLASGOW_HASKELL (определён только при использовании CPP). Подробности см. в Стандартных макросах препроцессора C++.

1.5. Лицензия Glasgow Haskell Compiler

Авторские права 2002 — 2007, Ученый совет Университета Глазго. Все права защищены.

Перераспределение и использование в исходном и двоичном виде, с изменениями или без них, разрешено при соблюдении следующих условий:

  • При перераспределении исходного кода необходимо сохранить вышеуказанное уведомление об авторских правах, этот список условий и следующее замечание об отказе от ответственности.
  • При перераспределении в двоичном формате необходимо воспроизвести вышеуказанное уведомление об авторских правах, этот список условий и следующее замечание об отказе от ответственности в документации и/или других материалах, предоставленных с распространением.
  • Имя университета или имена его авторов не должны использоваться для поддержки или продвижения продуктов, полученных из этого программного обеспечения, без предварительного письменного разрешения.

ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ УЧЕНЫМ СОВЕТОМ УНИВЕРСИТЕТА ГЛАЗГО И КОНТРИБУТОРАМИ «КАК ЕСТЬ», И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЮЩИЕСЯ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЮЩИМИ ГАРАНТИЯМИ ПРОДАВАЕМОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, ОТКАЗАННЫЕ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ УЧЕНЫЙ СОВЕТ УНИВЕРСИТЕТА ГЛАЗГО ИЛИ КОНТРИБУТОРЫ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДСТВИТЕЛЬНЫЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПЕРЕРЫВЫ В ДЕЯТЕЛЬНОСТИ) ВСЯКИМ ОБРАЗОМ И ПО ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, ЛИБО В ДОГОВОРЕ, ЛИБО ПО ПРИНЦИПУ СТРОГОЙ ОТВЕТСТВЕННОСТИ, ИЛИ В ПРЕСТУПЛЕНИИ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ДРУГОЕ) ПОСЛЕДСТВИИ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ ОНО БЫЛО ПРЕДУПРЕЖДЕНО О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.12.1/docs/users_guide/intro.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API