代码之家  ›  专栏  ›  技术社区  ›  Mark Anastos

在多个项目中重用Haskell代码

  •  0
  • Mark Anastos  · 技术社区  · 7 年前

    看起来我应该创建某种类型的库。我如何设置我的项目,使我只需要更新这些模块一次,并且依赖它们的所有存储库都可以访问最新版本?

    2 回复  |  直到 7 年前
        1
  •  6
  •   leftaroundabout    7 年前

    将模块捆绑在包中(或可能制作单模块包)。如果你以前没有这样做过, read the Cabal user guide .每个包,像任何其他代码一样,都应该在版本控制下(git、darcs等等),尽管严格来说这不是您需要的。

    foo ,包含模块 Common.Foo Common.Foo.Types Common/Foo.hs Common/Foo/Types.hs 和a foo.cabal exposed-modules: Common.Foo Common.Foo.Types

    使用 普通。Foo 然后也应该是阴谋集团的包裹,除了明显的 import Common.Foo 在Haskell源文件中,应该有一个 .cabal 存档 build-depends: foo .

    然后,每当您更改 cabal install --force-reinstalls (从内部 s目录)。这将更新本地包注册表,然后 cabal configure cabal build

    其实也考虑一下 publishing your package on Hackage (当然,一定要给它一个 清晰、描述性


    这个 --force-reinstalls 只有在您还 install ed依赖于 .重新安装后 然后还要重建这些,这是阴谋集团安装寄存器安装方式中的一点缺陷。这将 become unnecessary 未来

        2
  •  4
  •   SwiftsNamesake    7 年前

    stack stack.yaml

    flags: {}
    packages:
    - '.'
    - location: path/to/my/incredible/haskell/goodies
    - location:
        git: url/to/my/fp/repository
        commit: [commit-hash]
      extra-dep: true
    [etc., etc.]
    

    解决了臭名昭著的阴谋集团地狱问题),我强烈建议你去看看。