質問

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

役に立ちましたか?

解決

GHCは、最も広く使用されているHaskellコンパイラであり、最も機能を提供しています。ただし、他にもオプションがありますが、GHCよりも利点がある場合があります。これらは、より人気のある選択肢の一部です。

抱擁 - ハグは通訳です(コンパイラを含むとは思わない)。これは高速で効率的です。また、GHCよりも簡単に理解できるエラーメッセージを作成することでも知られています。

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

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

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

他のヒント

  1. Haskellは、GHCによって処理される言語として非公式に定義されています。
  2. GHCはのコンパイラです Haskellプラットフォーム.
  3. GHCでコードを最適化しようとすると、最適化スキルを習得するため、別のコンパイラに切り替えるよりも多く報われる場合があります。
  4. 沢山あります とても GHCの有用な拡張機能。私は彼らなしでは生きる方法を見ることができません。

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

言及する価値もあると思います NHC98. 。ホームページの宣伝文句から:

NHC98は、怠zyな機能的プログラミング言語であるHaskell 98の標準に準拠した小さなコンパイラです。それは非常にポータブルであり、少量のメモリで実行される小さな実行可能ファイルを生産することを目指しています。中程度のコードを生成し、コンパイル自体は非常に高速です。また、自動コンパイル、外国語のインターフェース、ヒープと時間のプロファイリング、トレース、デバッグのための広範なツールサポートが付属しています。

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年後でもかなり優れたコードを生成します。

GHCは堅実なコンパイラです。それがすべての目的に最適な選択であると言うのは非常に強いものです。そして、そのようなツールを探すことは無駄です。

それを使用してください、そしてあなたが本当に何か他のものを必要とするなら、その時点であなたはおそらくそれが何であるかを知っているでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top