distributionInclusive :: Ord a => [Set a] -> Distribution a
distributionInclusive votes = Distribution
    { total = length votes
    , parts = Map.fromListWith (+) $ concatMap (fmap (, 1) . Set.toList) votes
    }
distributionInclusive :: Ord a => [Set a] -> Distribution a
distributionInclusive votes = Distribution
    { total = length votes
    , parts = Map.fromListWith (+) $ concatMap (fmap (, 1) . Set.toList) votes
    }
distributionInclusive votes = Distribution
    { total = length votes
    , parts = Map.fromListWith (+) $ concatMap (fmap (, 1) . Set.toList) votes
    }