Я хочу написать функцию (модуль) Haskell типа: String -> String
для вызова в Android. Кажется, самый простой способ — использовать JHC для создания кода C, а затем использовать Android NDK для создания общей библиотеки, но я не смог найти никакой документации для JHC. Использует ли JHC Cabal для сборки? Достаточно ли стабилен JHC для использования библиотеки Parsec или Attoparsec?
как настроить таргетинг haskell на android с помощью jhc?
Ответы (2)
Еще в 2011 году я имел ограниченный успех, используя JHC аналогичным образом, но ориентируясь на iOS, а не на Android. Первоначальные результаты были хорошими в том, чтобы просто запустить эту штуку, но мы закончилось тем, что мы отказались от JHC в пользу GHC именно потому, что мы начали получать странные ошибки времени компиляции в программах, использующих Parsec. Имейте в виду, что это было в 2011 году, поэтому с тех пор JHC мог значительно улучшиться.
Если вы хотите дать GHC шанс, я бы порекомендовал посмотреть этот пример который использует GHC 7.8 для компиляции игры для Android. Я еще не использовал его в гневе, но мне удалось заставить его работать на Docker, дойдя до пересборки игры с нуля и установки ее на реальное Android-устройство, так что этот подход определенно заслуживает внимания.
ОБНОВЛЕНИЕ от августа 2017 г. Мориц Ангерманн опубликовал подробные инструкции по настройке Android с помощью кросс-компилятора GHC.
Что ж, компилятор с именем eta может быть сейчас наиболее удобным способом. Он нацелен на jvm и создаст файл jar, поэтому вы можете напрямую поместить его в свой проект