将 Haskell 程序编译为 C

标签 c haskell compilation

我必须遵循我试图编译成 C 的 Haskell 程序。 我看过 this SO post , 但无法在那里得到答案。

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 stop after generating C (.hc output)

最佳答案

编译为 C 现在是一种特殊用途的技巧,主要用于在新架构上进行引导。因此默认情况下不支持它。 The GHC wiki有一些在启用此支持的情况下自行构建 GHC 的说明;标准构建和支持编译为 C 的构建之间的主要区别在于使用 --enable-unregisterised 标志进行配置。另见 full list of pages on building GHC -- 它非常复杂,所以如果您决定这样做,您会希望把它放在手边。

关于将 Haskell 程序编译为 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52037888/

相关文章:

python - 从 python 调用 g++/clang 来编译 python 字符串

compilation - Automake:每个目标编译器

c - 在 Intel X_86 和 ARM 架构上转储两个相邻的 C 数组时出现奇怪的不同结果

algorithm - 列表处理的 Haskell 优化因惰性评估而受阻

list - 使用 Haskell 中的函数将列表的列表与列表组合起来

在haskell中解析json

c++ - 语法错误: missing ';' before 'type'

c - 请解释下面的一段代码。我是初学者所以请帮助我理解

c - Linux下硬盘满时fwrite不返回0,为什么?

c - 使用链表的航空公司预订系统