Компиляторы для Haskell - PullRequest
       27

Компиляторы для Haskell

24 голосов
/ 03 ноября 2010

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

Ответы [ 5 ]

36 голосов
/ 03 ноября 2010

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

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

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

UHC - Компилятор Утрехта Хаскелла почти полон функций (я думаю, что единственное, чего не хватает - это n + k шаблонов) для Haskell98.Он реализует многие из самых популярных расширений GHC, а также некоторые оригинальные расширения.В соответствии с документацией, код не обязательно хорошо оптимизирован.Это также хороший компилятор для взлома.

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

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

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

9 голосов
/ 03 ноября 2010

Думаю, стоит упомянуть nhc98 .Из объявления на домашней странице:

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

8 голосов
/ 07 мая 2011

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


Если вы исследователь, вы можете использовать UHC, если вы работаете в очень странной системе, у вас могут быть доступны только Hugs или 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 лет.

5 голосов
/ 03 ноября 2010

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

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

...