Initial implementation of payouts.
[?]
Feb 9, 2014, 4:56 AM
N4NDAZYTLSI2W22KT3SYXL257DBMSH3UT2BXOYM7LH7FSZAY4RLACDependencies
- [2]
7DBNV3GVInitial, stack-based impl of time log event reduction. - [3]
2KZPOGRBOnce you get Haskell to compile, the tests pass! - [4]
NVOCQVASInitial failing tests. - [5]
JUUMYIQEAdd groupBy utility function for use in TimeLog. - [6]
EQXRXRZDChanged to use tasty instead of test-framework
Change contents
- replacement in src/Ananke/Interval.hs at line 2
( Interval, interval, start, end( Interval, interval, start, end, ilen - edit in src/Ananke/Interval.hs at line 14[3.1745]
ilen :: Interval -> NominalDiffTimeilen i = diffUTCTime (end i) (start i) - edit in src/Ananke/TimeLog.hs at line 48
type Payouts = Map BtcAddr Rational - replacement in src/Ananke/TimeLog.hs at line 50
payouts :: [LogEntry] -> Map BtcAddr Rationalpayouts = undefinedsumLogIntervals :: [LogInterval] -> RationalsumLogIntervals ivals = F.foldl' (+) (fromInteger 0) $ fmap (toRational . ilen . workInterval) ivals - edit in src/Ananke/TimeLog.hs at line 53
payouts :: WorkIndex -> Payoutspayouts widx = let addIntervalDiff total ivals = (\dt -> (dt + total, dt)) $ sumLogIntervals ivals(totalTime, keyTimes) = M.mapAccum addIntervalDiff (fromInteger 0) $ M.map snd widxin M.map (\kt -> kt / totalTime) keyTimes - replacement in src/Ananke/TimeLog.hs at line 62
appendLogEntry workIndex entry = let acc = reduce $ pushEntry entry workIndexappendLogEntry workIndex entry = let acc = reduceToIntervals $ pushEntry entry workIndex - replacement in src/Ananke/TimeLog.hs at line 68
reduce :: ([LogEntry], [LogInterval]) -> ([LogEntry], [LogInterval])reduce ((LogEntry addr end StopWork) : (LogEntry _ start StartWork) : xs, intervals) = (xs, (LogInterval addr (interval start end)) : intervals)reduce other = other[2.870]reduceToIntervals :: ([LogEntry], [LogInterval]) -> ([LogEntry], [LogInterval])reduceToIntervals ((LogEntry addr end StopWork) : (LogEntry _ start StartWork) : xs, intervals) = (xs, (LogInterval addr (interval start end)) : intervals)reduceToIntervals misaligned = misaligned - edit in test/Test.hs at line 47[3.4710]