W3PIWHDK4DQHBD54FN4PIF3PELIT2V74L62AMMXM2M5BHYAACALAC DZ7G36NC3LJLRBZDFIYINFKNABIK2WIBINKLW7FCSKT5G4YSBYUQC X3ES7NUA42D2BF7CQDDKXM5CLMVCYA3H5YU5KXLPTGDBFPE2LNVAC NVOCQVASZWTKQJG7GPH7KHKZZR7NUG4WLV5YY4KAIRPCJRWCZPIAC IR75ZMX32SFFMDNV2I2L22X5JTWCOC4UUBCSPU7S6VHR6HFV6ADQC CI4OPKQMU4CIX3QPGA5GWSEOPJ2FAREDBVU6X33E7X3EEQXAICRQC U7YAT2ZK6GMS7KVFFEQTDRFX6GIN7HVHNWGKIFDGJGE2G2IXSF6QC NEDDHXUK3GNFMOFO3KLU7NRIHCTYNWBT3D6HTKZAOXFDE6HMDZ6AC B6HWAPDPXIWH7CHK5VLMWLL6EQN6NOFZEFYO47BPUY2ZO4SL7VDAC M4PWY5RUV72AEDCNC4O7UKBPHBIACR4354YTSC3SUZGWFV5UBJBQC 7KZP4RHZ3QSYTPPQ257A65Z5UPX44TF2LAI2U5EMULQCLDCEUK2AC UWMGUJOW5X5HQTS76T2FD7MNAJF7SESPQVU5FDIZO52V75TT2X6AC QMRKFEPGFBCEWAIXPEIG5ILKAJ2JH5L3TOITHR4HNJXK5FN3KXBQC IPG33FAWXGEQ2PO6OXRT2PWWXHRNMPVUKKADL6UKKN5GD2CNZ25AC PBD7LZYQHXAA3KLH2ZUX5GW4UFML6BQ32KXZF4KZ6OYFASUYFJ5QC EMVTF2IWNQGRL44FC4JNG5FYYQTZSFPNM6SOM7IAEH6T7PPK2NVAC Y35QCWYW2OTZ27ZVTH2BA3XJTUCJ2WMLKU32ZCOCDY3AW7TIZXRAC KNSI575VAW6HRCZYXOEPQ4DTSML4EORML5MV4DJBRKE7TXCPS4EAC 4SCFOJGNDAN4XZEAPWQQCBJ3CGZCJP3HUADRQLYZ2ITAKA7EJJTQC SCXG6TJWYIPRUMT27KGKIIF6FYKTUTY74UNZ2FQTT63XZ6HIF3AAC 5DRIWGLUKMQZU2ZPBXSTLAWJKAMOD5YXAHM5LEDQHDFGYYLHWCDQC EFSXYZPOGA5M4DN65IEIDO7JK6U34DMQELAPHOIL2UAT6HRC66BAC OBFPJS2GHO2PEHBHGEHKIUOUAFIQHPIZXEVD2YIE3ZIE2PVMH5VAC workCredit depf ptime ivals =let intervalCredit ival = (Sum . ilen &&& Sum . depf Nothing ptime) $ fmap (view eventTime) ival
workCredit depf payoutDate ivals =let intervalCredit ival = (Sum . ilen &&& Sum . depf Nothing payoutDate) $ fmap (view eventTime) ival
(StartWork t, StopWork t') | t' > t -> Right $ Interval e e' -- complete interval found(StartWork t, StartWork t') -> Left $ if t > t' then e else e' -- ignore redundant starts(StopWork t, StopWork t') -> Left $ if t <= t' then e else e' -- ignore redundant ends
(StartWork t, StopWork t')| t' > t ->-- complete interval foundRight $ Interval e e'(StartWork t, StartWork t') ->-- ignore redundant startsLeft $ if t > t' then e else e'(StopWork t, StopWork t') ->-- ignore redundant endsLeft $ if t <= t' then e else e'
traceWith :: Show b => (a -> b) -> a -> atraceWith f a = T.trace (show $ f a) a
import Aftok.Types (UserId (..), DepreciationFunction(..))import Control.Lens ((^.), view, to)import Data.AffineSpace ((.-.), (.+^))import Data.VectorSpace ((*^), Sum (..), (^+^), (^-^), getSum, zeroV)import Data.Maybe (fromJust)
import Aftok.Types (DepreciationFunction (..), UserId (..))import Control.Lens ((^.), to, view)import Data.AffineSpace ((.+^))
. filter (\i -> fst i `mod` 2 == 0)$ ([(0 :: Int)..] `zip` (timestamps `zip` tail timestamps))widx = WorkIndex $ M.fromList[ (u0, L.fromList $ take 10 intervals), (u1, L.fromList $ take 30 intervals), (u2, L.fromList $ take 120 intervals)]
. filter (\i -> fst i `mod` 2 == 0)$ ([(0 :: Int) ..] `zip` (timestamps `zip` tail timestamps))widx =WorkIndex $M.fromList[ (u0, L.fromList $ take 10 intervals),(u1, L.fromList $ take 30 intervals),(u2, L.fromList $ take 120 intervals)]