繁体   English   中英

将 Haskell 程序编译为 C

[英]Compile Haskell programs to C

我必须遵循我试图编译为 C 的 Haskell 程序。我看过这个 SO 帖子,但在那里找不到答案。

quicksort [] = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
  where
    lesser  = filter (<  p) xs
    greater = filter (>= p) xs

main = print(quicksort([5,2,1,0,8,3]))

这是我尝试过的:

$ ghc -C main.hs

我得到的是:

ghc: the option -C is only available with an unregisterised GHC
Usage: For basic information, try the `--help' option.

这有点奇怪,因为当我查看帮助时,我看到了:

-C 生成 C 后停止(.hc 输出)

编译为 C 现在是一种特殊用途的技巧,主要用于引导新架构。 因此,默认情况下不支持它。 GHC wiki有一些说明,用于在启用此支持的情况下自己构建 GHC; 标准构建和能够编译为 C 的构建之间的主要区别是使用--enable-unregisterised标志进行配置。 另请参阅有关构建 GHC 的完整页面列表——它非常复杂,因此如果您决定这样做,您需要将其放在手边。

这个选项是古老的。

几年前,GHC 曾经通过 C 编译,但在正常情况下不再这样做。 如今,GHC 不再使用生成 C 代码并使用gcc进行编译,而是使用自己的本机代码生成器(或 LLVM)。

从技术上讲,可以将 GHC 本身编译为“未注册”以重新启用该选项。 这需要从其源代码自定义构建 GHC。 然而,这将产生相当低效的 C 代码。 务实地说,这只在交叉编译或将 GHC 移植到新架构时才会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM