Как я могу управлять несколькими конфигурациями одной программы на Haskell? - PullRequest
5 голосов
/ 14 апреля 2009

Какая альтернатива автоинструментам в мире Haskell? Я хочу иметь возможность выбирать между разными конфигурациями одного и того же исходного кода.

Например, в Haskell есть как минимум две реализации MD5: Data.Digest.OpenSSL.MD5 и Data.Digest.Pure.MD5. Я хотел бы написать код таким образом, чтобы он мог определить, какая библиотека уже установлена, а другую не требовалось устанавливать.

В C я могу использовать Autotools / Scons / CMake + cpp. В Python я могу поймать ImportError. Какие инструменты я должен использовать в Haskell?

Ответы [ 2 ]

14 голосов
/ 14 апреля 2009

В Haskell вы используете конфигурации Cabal. В каталог верхнего уровня вашего проекта вы помещаете файл с расширением .cabal, например, <yourprojectname>.cabal. Содержание примерно:

Name:                myfancypackage
Version:             0.0
Description:         myfancypackage
License:             BSD3
License-file:        LICENSE
Author:              John Doe
Maintainer:          john@example.com
Build-Type:          Simple
Cabal-Version:       >=1.4

Flag pure-haskell-md5
  Description: Choose the purely Haskell MD5 implementation
  Default: False

Executable haq
  Main-is:           Haq.hs
  Build-Depends:     base-4.*
  if flag(pure-haskell-md5)
    Build-Depends:   pureMD5-0.2.*
  else
    Build-Depends:   hopenssl-1.1.*

Документация Cabal содержит более подробную информацию, в частности, раздел Конфигурации .

2 голосов
/ 14 апреля 2009

Как говорит Номиноло, Cabal - это инструмент для использования. В частности, синтаксис «конфигурации».

...