
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?