我必须遵循我试图编译成 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/