Подтвердить что ты не робот

Составители для Haskell

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

С 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

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

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