Initial implementation of payouts.

[?]
Feb 9, 2014, 4:56 AM
N4NDAZYTLSI2W22KT3SYXL257DBMSH3UT2BXOYM7LH7FSZAY4RLAC

Dependencies

  • [2] 7DBNV3GV Initial, stack-based impl of time log event reduction.
  • [3] 2KZPOGRB Once you get Haskell to compile, the tests pass!
  • [4] NVOCQVAS Initial failing tests.
  • [5] JUUMYIQE Add groupBy utility function for use in TimeLog.
  • [6] EQXRXRZD Changed to use tasty instead of test-framework

Change contents

  • replacement in src/Ananke/Interval.hs at line 2
    [3.1447][3.1447:1483]()
    ( Interval, interval, start, end
    [3.1447]
    [3.1483]
    ( Interval, interval, start, end, ilen
  • edit in src/Ananke/Interval.hs at line 14
    [3.1745]
    ilen :: Interval -> NominalDiffTime
    ilen i = diffUTCTime (end i) (start i)
  • edit in src/Ananke/TimeLog.hs at line 48
    [2.350]
    [2.350]
    type Payouts = Map BtcAddr Rational
  • replacement in src/Ananke/TimeLog.hs at line 50
    [2.351][3.2287:2353](),[3.2287][3.2287:2353]()
    payouts :: [LogEntry] -> Map BtcAddr Rational
    payouts = undefined
    [2.351]
    [3.2353]
    sumLogIntervals :: [LogInterval] -> Rational
    sumLogIntervals ivals = F.foldl' (+) (fromInteger 0) $ fmap (toRational . ilen . workInterval) ivals
  • edit in src/Ananke/TimeLog.hs at line 53
    [3.2354]
    [2.352]
    payouts :: WorkIndex -> Payouts
    payouts widx = let addIntervalDiff total ivals = (\dt -> (dt + total, dt)) $ sumLogIntervals ivals
    (totalTime, keyTimes) = M.mapAccum addIntervalDiff (fromInteger 0) $ M.map snd widx
    in M.map (\kt -> kt / totalTime) keyTimes
  • replacement in src/Ananke/TimeLog.hs at line 62
    [2.502][2.502:581]()
    appendLogEntry workIndex entry = let acc = reduce $ pushEntry entry workIndex
    [2.502]
    [2.581]
    appendLogEntry workIndex entry = let acc = reduceToIntervals $ pushEntry entry workIndex
  • replacement in src/Ananke/TimeLog.hs at line 68
    [2.870][2.870:1105]()
    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]