Если вы хотите «упаковать» ваши файлы конфигурации в вашу программу, это достаточно просто; Шаблон Haskell имеет функцию runIO , которая позволяет выполнять произвольные действия (например, чтение и анализ файла конфигурации) во время компиляции; Это стало немного более доступным благодаря пакету file-embed . Таким образом, вы можете написать свое приложение в виде runAppWithConfig :: Configuration -> IO ()
, а затем иметь два двоичных файла, которые в основном просто main = readConfigFile >>= runAppWithConfig
или main = runAppWithConfig embeddedConfig
. Или вы можете сделать и то и другое, со встроенной конфигурацией по умолчанию, но также позволяющей переопределить параметры по умолчанию параметрами командной строки, а что нет.
Yesod использует подход, предусматривающий много конфигураций времени компиляции .
Конечно, в качестве альтернативы вы также можете go a Haskell независимый маршрут и на самом деле создать нечто похожее на .war, используя что-то вроде AppImage , что является своего рода смесью самораспаковывающийся архив и приложение.
Но на самом деле, как сделать настройку, не особо зависит от языка c, и существует множество подходов к go. Вы можете даже оставить свое приложение в том виде, в котором оно есть сейчас, и просто отправить нужную конфигурацию вместе с ним, а не просто копировать двоичный файл.