Михаил ответит хорошо, но есть и другая сторона. Есть также вещи, которые hsc2hs обеспечивает, что c2hs не делает, и может быть необходимо использовать оба вместе.
Примечательно, что hsc2hs работает, создавая исполняемый файл C, который запускается для генерации кода на Haskell, а c2hs непосредственно анализирует заголовочные файлы. Следовательно, hsc2hs позволяет вам получить доступ к #define
s и т. Д. Поэтому, хотя я обнаружил, что c2hs лучше подходит для генерации привязок и оберток к привязкам, а также для «глубоких» подсчетов и подсчетов в сложных структурах C, он не подходит для доступа к константам и перечисления, и это лишь слегка автоматизирует шаблон для хранимых экземпляров. Я обнаружил, что hsc2hs также необходим в сочетании с пакетом bindings-dsl [1], в частности, в моем случае для предопределенных констант. В одном случае у меня есть один файл hsc для огромного количества констант и один файл chs для обёртывания функций, которые используют эти константы.
[1] http://hackage.haskell.org/package/bindings-DSL