AFAIK GHC是当今最常见的编译器,但我也看到,其他一些杂物也可以使用。 GHC确实是所有目的的最佳选择,还是我可以使用其他东西?例如,我读到一些编译器(忘记了名称)在优化方面做得更好,但并未实现所有扩展。

有帮助吗?

解决方案

GHC是迄今为止使用最广泛的Haskell编译器,它提供了最多的功能。但是,还有其他选择,有时比GHC有一些好处。这些是一些最受欢迎的选择:

拥抱 - Hugs是一位口译员(我认为它不包括编译器),既快速有效)。它也以比GHC更容易理解的错误消息而闻名。

JHC - 全程编译器。 JHC可以产生非常有效的代码,但尚未完成功能(这可能是您在想的)。请注意,它并不总是比GHC更快,有时只有。我没有使用太多JHC,因为它没有实现多参数类型类,我可以大量使用。我听说源代码非常清晰且可读性,使其成为可侵入的好编译器。 JHC对于交叉编译也更方便,通常会产生较小的二进制文件。

UHC - utrecht haskell编译器几乎是功能完整的(我认为唯一缺少的是n+k图案)Haskell98。它实现了GHC许多最受欢迎的扩展名和一些原始扩展。根据文档代码,不一定要精心设计。这也是一个很好的编译器。

简而言之,如果您想要有效的代码和尖端功能,GHC是您最好的选择。如果您不需要MPTC或其他一些功能,JHC值得尝试。在某些情况下,UHC的扩展可能会引人注目,但是我还不指望快速代码。

其他提示

  1. Haskell非正式地定义为GHC处理的语言。
  2. GHC是编译器 Haskell平台.
  3. 试图通过GHC优化代码可能比切换到另一个编译器还能获得更多的回报,因为您将学习一些优化技能。
  4. 有许多 非常 GHC中有用的扩展。我只是看不到没有他们的生活。

因此,对于任何严重的事情(例如非学术,非实验性,非易失性或使用许多软件包),实用的选择是与GHC一起使用。

我认为这也值得一提 NHC98. 。从主页上的大小说:

NHC98是一种易于安装的小型,符合标准的编译器,用于Haskell 98(懒惰的功能编程语言)。它是非常便携的,旨在产生以少量内存运行的小型可执行文件。它产生了中等快速的代码,并且编译本身很快。它还具有广泛的工具支持,用于自动汇编,外语接口,堆和时间分析,跟踪和调试。

截至2011年,GHC除了日常编程外,别无选择。惠普团队强烈鼓励所有Haskell程序员使用GHC。


如果您是研究人员,则可以使用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