hunk ./src/Data/EventList/Relative/TimeBody.hs 42 + toAbsoluteEventListGen, fromAbsoluteEventListGen, hunk ./src/Data/EventList/Relative/TimeBody.hs 542 -toAbsoluteEventList start = - AbsoluteEventPriv.Cons . decons . - flip evalState start . - mapTimeM (\dur -> modify (dur+) >> get) +toAbsoluteEventList = toAbsoluteEventListGen (+) hunk ./src/Data/EventList/Relative/TimeBody.hs 546 -fromAbsoluteEventList = - flip evalState 0 . +fromAbsoluteEventList = fromAbsoluteEventListGen (-) 0 + +{- | +Convert from relative time stamps to absolute time stamps +using a custom accumulator function (like @(+)@). +-} +toAbsoluteEventListGen :: + (absTime -> relTime -> absTime) -> + absTime -> T relTime body -> AbsoluteEventList.T absTime body +toAbsoluteEventListGen accum start = + AbsoluteEventPriv.Cons . decons . + flip evalState start . + mapTimeM (\dur -> modify (flip accum dur) >> get) + +{- | +Convert from absolute time stamps to relative time stamps +using custom subtraction (like @(-)@) and zero. +-} +fromAbsoluteEventListGen :: + (absTime -> absTime -> relTime) -> + absTime -> + AbsoluteEventList.T absTime body -> T relTime body +fromAbsoluteEventListGen diff start = + flip evalState start . hunk ./src/Data/EventList/Relative/TimeBody.hs 571 - (\time -> do lastTime <- get; put time; return (time-lastTime)) . + (\time -> do lastTime <- get; put time; return (diff time lastTime)) .