Включите пакет Haskell с закрытым исходным кодом в пакет Haskell с открытым исходным кодом без утечки его кода

#haskell #package #hackage

#хаскелл #пакет #хакерство

Вопрос:

Я работаю над пакетом Haskell с открытым исходным кодом и хочу использовать свой собственный пакет в качестве зависимости без утечки его исходного кода.

Одним из способов было бы скомпилировать его в двоичный файл и вызвать через System.Process.callCommand , но это было бы излишне неэффективно.

Есть ли другой способ распространить пакет в двоичном формате или, по крайней мере, сильно запутанный?

Комментарии:

1. Вам нужен только исходный код, чтобы скомпилировать его в объектный файл, который компоновщик использует для создания окончательного исполняемого файла. Компоновщику все равно, был ли объектный файл создан локально или где-то еще.

2. @chepner, однако, это еще не вся история. Например, GHC хочет проверять вызовы типа и знать, какие имена экспортируются каждым модулем, и даже в некоторых случаях фактический код хочет перемещаться по границам модуля (например, встраивание или специализация).