Вопрос

AFAIK GHC является наиболее распространенным компилятором сегодня, но я также вижу, что некоторые другие компании также доступны. GHC действительно лучший выбор для всех целей или я могу использовать что-то еще? Например, я прочитал, что какой-то компилятор (забыл имя) лучше на оптимизациях, но не реализует все расширения.

Это было полезно?

Решение

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

Обнимает - Объятия - это переводчик (я не думаю, что он включает в себя компилятор), который является быстрой и эффективной. Он также известен для производства более понятных сообщений об ошибках, чем GHC.

Jhc. - целый программный компилятор. JHC может производить очень эффективный код, но это еще не полностью выполнено (это, вероятно, что вы думаете). Обратите внимание, что это не всегда быстрее, чем GHC, только иногда. Я не использовал JHC много, потому что он не реализует многопараметрические классы типа, которые я использую сильно. Я слышал, что исходный код чрезвычайно чистый и читаемый, делая это хорошим компилятором, чтобы взлом. JHC также удобнее для пересечения и обычно производит меньшие двоичные файлы.

Uhc. - Компилятор Utrecht Haskell находится рядом с функциями (я думаю, что единственное, что не хватает узоров N + K) для Haskell98. Он реализует многие из самых популярных расширений GHC и некоторых оригинальных расширений. Согласно коду документации не обязательно хорошо оптимизировано. Это также хороший компилятор, чтобы взломать.

Короче говоря, если вы хотите эффективному коду и режущим функциям, GHC - ваша лучшая ставка. JHC стоит попробовать, если вам не нужны MPTC или некоторые другие функции. Удлинения UHC могут быть убедительными в некоторых случаях, но я бы не рассчитываю на него для быстрой кода.

Другие советы

  1. Haskell неформально определяется как язык, обрабатываемый GHC.
  2. GHC является компилятором Платформа Haskell.
  3. Попытка оптимизировать свой код с помощью GHC, может выплатить больше, чем переключение на другой компилятор, поскольку вы узнаете некоторые навыки оптимизации.
  4. Есть много очень Полезные расширения в GHC. Я просто не вижу, как жить без них.

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

Я думаю, что это также стоит упомянуть NHC98.. Отказ Из рекламы на главной странице:

NHC98 - это маленькая, простая в установке, соответственно, соответствует стандартам компилятора для HASKELL 98, ленивый язык функционального программирования. Он очень портативный и направлен на создание небольших исполняемых файлов, которые работают в небольших количествах памяти. Это производит средний быстрый код, а компиляция сама по себе довольно быстро. Он также поставляется с обширной поддержкой инструмента для автоматической компиляции, взаимодействия на иностранном языке, вождении, кучи и профилирования, трассировки и отладки.

По состоянию на 2011 год действительно нет другого выбора, чем GHC для повседневного программирования. Команда HP настоятельно рекомендует использовать GHC всеми программистами Haskell.


Если вы исследователь, вы можете использовать использование UHC, если вы находитесь в очень странной системе, вы можете иметь только объятия или NHC98. Если у вас есть ретро-вентилятор, как я, у вас все еще есть GOFER, HBC и HBI:

$ hbi
Welcome to interactive Haskell98 version 0.9999.5c Pentium 2004 Jun 29!
Loading prelude... 1 values, 4 libraries, 200 types found.
Type "help;" to get help.
> help;
        HBI  -- Interactive Haskell B 1.3

HBI круто, потому что A) Он реализует Haskell B, а B) он поддерживает полный язык в командной строке:

> data L a = I | X a (L a) deriving Show;
data L b = I | X b (L b) deriving (Show)
> X 4 (X 3 I);
X 4 (X 3 I)

И компилятор производит довольно хороший код, даже 15 лет спустя.

GHC - это твердый компилятор. Говорят, это лучший выбор для всех целей очень сильный. И ищет такой инструмент бесполезно.

Используйте его, и если вам действительно нужно что-то еще, то к этому вопросу, вы, вероятно, знаете, что это такое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top