>>>>> "CD" == Colin Dean <[email protected]> writes:
CD> I have not yet arrived at a solution. I'd welcome input!
Hi Colin,
So, in an unexpected turn of events while writing a Haskell time tracking
program, I ended up inventing a new kind of budgeting algorithm that is both
simpler and more power than what is currently in Ledger. Essentially it boils
down the problem of budget to this:
- Given two sets of non-overlapping intervals with associated "values"
- Where one represents the ideal picture (i.e., your budget)
- And the second represents the real picture (i.e., your spending, which in
the case of monetary spending with Ledger would represent the intervals as
whole days)
- Then we can compute many details of the budgeting without knowing *either*
that the intervals are bounded by time, or that the associated values
represent money (or time or anything else).
This has been turned into a generalized tool for budgeting time here:
https://github.com/jwiegley/hours
Now, although the main driver for the tool as present above uses time-bounded
intervals with associated time costs (it is, after all a time-budgeting
program), the underlying algorithm knows nothing about time at all, but
instead is polymorphic of any type of value for the bounding, and any type of
value for the associated costs.
Thus, it should be quite easy at this point to write a new main driver that
takes data from Ledger and generates the desired data, such as what you're
performance against the budget has been over time, and what your "state of
affairs" is relative to the current moment.
I won't have the time to do this for a few weeks, but I wonder if there are
any other Haskell programmers here who'd be interested to take a look?
John
--
---
You received this message because you are subscribed to the Google Groups
"Ledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.