Компилировать программы Haskell на C

Я должен следовать программе Haskell, которую я пытаюсь скомпилировать для C. Я смотрел этот пост SO , но не мог получить ответ.

quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = 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 содержит инструкции по созданию GHC с поддержкой этой поддержки; основное различие между стандартной сборкой и сборкой, которая позволяет скомпилировать C, состоит в настройке с флагом --enable-unregisterised . См. Также полный список страниц о строительстве GHC – это довольно сложно, поэтому вы захотите сохранить эту возможность, если решите это сделать.

Этот вариант древний.

Серверный год назад GHC использовался для компиляции через C, но больше не делает этого в обычных сценариях. Вместо генерации кода C и компиляции с gcc , в настоящее время GHC использует собственный генератор собственных кодов (или LLVM).

Технически можно скомпилировать сам GHC как «незарегистрированный», чтобы повторно включить этот параметр. Для этого требуется специальная assembly GHC из исходного кода. Это, однако, приведет к довольно неэффективному коду C. Прагматически это делается только при кросс-компиляции или при переносе GHC в новую архитектуру.