rework Differences data type

Eliminated complexity and future proofed. The most important change is that
all functions over Difference are now total; any Difference that can be
expressed should be handled. Avoids needs for sanity checking of inputs,
and version skew with the future.

Also, the difference.log now serializes a [Difference], not a Differences.
This saves space and keeps it simpler.

Note that [Difference] might contain conflicting differences (eg,
[Version5, Version6]. In this case, one of them needs to consistently win
over the others, probably based on Ord.
This commit is contained in:
Joey Hess 2015-01-28 13:47:41 -04:00
parent 354de19cbe
commit ba3825441c
8 changed files with 42 additions and 90 deletions

View file

@ -19,7 +19,7 @@ import Logs.UUIDBased
parseDifferencesLog :: String -> (M.Map UUID Differences)
parseDifferencesLog = simpleMap
. parseLog (Just . fromMaybe UnknownDifferences . readish)
. parseLog (Just . maybe UnknownDifferences Differences . readish)
-- The sum of all recorded differences, across all UUIDs.
allDifferences :: M.Map UUID Differences -> Differences