В Windows GHC распространяется с gcc и g++, например. под ghc-7.6.3\mingw\bin
. На странице загрузки также указано, что сборка для Windows "также включает поддержку компиляции файлов C++».
Я мог предположить, что эти компиляторы распространяются только для удобства, поскольку Windows не поставляется с ними. Я также мог предположить, что это необходимо для использования FFI, но я не уверен на 100%. Например, хотя GHC компилирует файлы .c и .cpp, используя собственные компиляторы gcc/g++, GHC также предоставляет параметры для выбора нужного компилятора и компоновщика. И действительно, вы можете указать свой собственный gcc/g++, и это, похоже, работает. Вы даже можете немного вырезать GHC из цикла, предварительно скомпилировав файлы .c/.cpp и вызывая GHC только для компиляции кода Haskell и компоновки всего этого с помощью -pgml
(хотя общий эффект такой же, как при использовании -pgmc
). и -pgml
).
Теперь это похоже работает, но зависит ли это от чистой удачи, если вы укажете -pgml
и -pgmc
как версию gcc, совместимую с тем, что имеет в виду GHC? Другими словами, когда я использую FFI, я действительно должен компилировать и связывать все только с вызовами GHC?