代码之家  ›  专栏  ›  技术社区  ›  sastanin

如何管理单个haskell程序的多个配置?

  •  5
  • sastanin  · 技术社区  · 15 年前

    在Haskell世界里,什么是自动工具的替代品?我希望能够在同一源代码的不同配置之间进行选择。

    例如,Haskell中至少有两个MD5实现: Data.Digest.OpenSSL.MD5 Data.Digest.Pure.MD5 . 我想以这样一种方式编写代码:它可以找出已经安装了哪个库,而不需要安装另一个库。

    在C中,我可以使用autotools/scons/cmake+ cpp . 在巨蟒中我能抓住 ImportError . 我应该在Haskell中使用哪些工具?

    2 回复  |  直到 15 年前
        1
  •  14
  •   nominolo    15 年前

    在哈斯克尔,你使用阴谋集团的配置。在项目的顶层目录中,放置一个扩展名为 .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 documentation 有更多的细节,特别是关于 Configurations .

        2
  •  2
  •   Don Stewart    15 年前

    正如诺米诺罗所说,阴谋集团是一种工具。尤其是“配置”语法。