24

私の知る限り、GHC は今日最も一般的なコンパイラですが、他のコンパイラも利用できることがわかります。GHC は本当にすべての目的に最適な選択ですか、それとも代わりに何か他のものを使用できますか? たとえば、一部のコンパイラ (名前は忘れました) は最適化に関して優れているが、すべての拡張機能を実装しているわけではないことを読みました。

4

5 に答える 5

36

GHC は最も広く使用されている Haskell コンパイラであり、最も多くの機能を提供します。ただし、他のオプションがあり、GHC よりも優れている場合があります。これらは、より一般的な代替手段の一部です。

Hugs - Hugs は高速で効率的なインタープリター (コンパイラーは含まれていないと思います) です. また、GHC よりもわかりやすいエラー メッセージを生成することでも知られています。

JHC - プログラム全体のコンパイラ。JHC は非常に効率的なコードを生成できますが、まだ機能が完全ではありません (これはおそらくあなたが考えていることです)。GHC よりも常に高速であるとは限らないことに注意してください。JHC は、私が頻繁に使用するマルチパラメーター型クラスを実装していないため、あまり使用していません。ソースコードは非常に明確で読みやすいと聞いたことがあります。これは、ハッキングするのに適したコンパイラです。JHC はクロス コンパイルにも便利で、通常はより小さなバイナリを生成します。

UHC - Haskell98 の Utrecht Haskell Compiler の機能はほぼ完全です (欠けているのは n+k パターンだけだと思います)。GHC の最も人気のある拡張機能の多くといくつかのオリジナルの拡張機能も実装しています。ドキュメントによると、コードはまだ十分に最適化されているとは限りません。これは、ハッキングするのにも適したコンパイラです。

要するに、効率的なコードと最先端の機能が必要な場合は、GHC が最適です。MPTC やその他の機能が必要ない場合は、JHC を試してみる価値があります。UHC の拡張機能は場合によっては魅力的かもしれませんが、高速なコードについてはまだ期待していません。

于 2010-11-03T09:01:39.527 に答える
10
  1. Haskell は、GHC が扱う言語として非公式に定義されています。
  2. GHC はHaskell プラットフォームのコンパイラです。
  3. GHC でコードを最適化しようとすると、別のコンパイラに切り替えるよりも多くの効果が得られる可能性があります。最適化のスキルを学ぶことができるからです。
  4. GHCには非常に便利な拡張機能がたくさんあります。彼らなしでは生きていけない。

したがって、何か深刻なもの (たとえば、非学術的、非実験的、非揮発性、または多くのパッケージを使用するもの) の場合、実用的な選択は GHC を使用することです。

于 2010-11-07T00:53:17.987 に答える
9

nhc98についても言及する価値があると思います。ホームページの宣伝文から:

nhc98は、怠惰な関数型プログラミング言語であるHaskell 98用の、小さくてインストールが簡単な、標準に準拠したコンパイラです。非常に移植性が高く、少量のメモリで実行される小さな実行可能ファイルを作成することを目的としています。中速のコードを生成し、コンパイル自体は非常に高速です。また、自動コンパイル、外国語インターフェース、ヒープと時間のプロファイリング、トレース、およびデバッグのための広範なツールサポートが付属しています。

于 2010-11-03T15:26:01.647 に答える
8

2011年の時点で、日常のプログラミングにはGHC以外の選択肢はありません。HPチームは、すべてのHaskellプログラマーによるGHCの使用を強く推奨しています。


研究者の場合は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年後でもかなり良いコードを生成します。

于 2011-05-07T03:09:12.107 に答える
5

ghc はしっかりしたコンパイラです。それがすべての目的にとって最良の選択であるということは、非常に強いものです。そのようなツールを探しても無駄です。

それを使用してください。本当に何か他のものが必要な場合は、その時点までにおそらくそれが何であるかがわかります。

于 2010-11-03T07:04:58.627 に答える