[Haskell-cafe] lazily updating dependencies, git submodules and cabal

Dimitri DeFigueiredo defigueiredo at ucdavis.edu
Thu Sep 10 18:26:55 UTC 2015

Yes, it's the classic diamond dependency graph.
  / \
B  C
  \ /

A = Trader, B = ProfitCalculator, C = Persistence, D = MarketModel.
It is not that I *want* Trader (A) to depend on two different versions 
of MarketModel (D), that is just a consequence. I don't have a choice.

What I want is for the ProfitCalculator (B) and Persistence (C) to 
always build. And if an update changes the MarketModel (D) from 
underneath them, they might break. So, I want them to each lock-in a 
specific version. In effect, I am forcing the graph above to turn into 
something like.
    / \
   B  C
  /     \
D       D'

I may not write any code that uses the MarketModel (D) directly on the 
Trader (A).
I do understand that there are at least 1 point to keep in mind:
  types defined in D will be different from those in D' (typeclasses 
will be defined twice)

But the benefit of *not* having to always keep everything building on 
the latest version every time I update the MarketModel (D) is huge for me!



Em 10/09/15 06:50, timmy tofu escreveu:
>     Using the 'cabal sandbox add-source' solution now requires that I
>     "add-source" the MarketModel package too. Otherwise, any change I make
>     to this package will not be tracked.
> then…
>     Cabal sets the paths for "import"ed
>     modules in the "hs-source-dirs:" and that is global to the whole
>     package.
>  I can't tell if you do or do not want ProfitCalculator and 
> Persistence to track changes made in MarketModel.
> If you do, and both should be in lock-step with it (unlike your 
> situation with Tax), then you don't have a problem.
> If not, then the problem is Trader would depend on ProfitCalculator 
> which might depend on a different version of MarketModel than 
> Persistence (upon which Trader also depends). That is a classic 
> dependency problem and not a function of submodules or add-sourcing, 
> per se. The Trader module seems to be at the top of this heap - why 
> would you want the Trader to (indirectly) use one version of 
> MarketModel through ProfitCalculator, and another through Persistence?
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150910/8c022686/attachment.html>

More information about the Haskell-Cafe mailing list