Я довго був розробником Java, але нещодавно я приєднався до команди Haskell. У світі java, якщо у вас великий проект, де над ним працюють декілька команд, загальним підходом є використання сервера артефактів, такого як Maven, для полегшення та прискорення розвитку. Численні інструменти збирання, такі як Ant, Maven, Gradle, можуть скласти проект та завантажити файл jar на сервер артефактів, який може без особливих зусиль використовувати решта команди. Тому, розділяючи проект на менші підпроекти, час збирання також різко скорочується.
З боку Haskell ми використовуємо cabal
для побудови проекту. Нашому проекту потрібно приблизно 10–15 хвилин, щоб не робити оптимізації. Якщо ввімкнено оптимізацію компілятора, це боляче, що займає кілька годин.
Цікаво, як ми можемо зробити те саме, що ми робимо на Java. Чи є простий спосіб компілювати та завантажувати двійкові файли пакетів (бібліотек) на сервер артефактів та використовувати заздалегідь вбудовані двійкові файли під час збирання? Я знаю, що оскільки Haskell генерує машинний код (а не байт-код на Java), можуть бути проблеми сумісності, але ми, ймовірно, можемо мати різні бінарні файли для різних архітектур / ОС, що зберігаються на сервері артефактів.
cabal
, GHC
, Test.Framework
або лінкер.