hjugement-2.0.0.20181030: Majority Judgment.

Safe HaskellNone
LanguageHaskell2010

Majority.Value

Contents

Synopsis

Type MajorityValue

newtype MajorityValue grade Source #

A MajorityValue is a list of grades made from the successive lower middlemosts of a Merit, i.e. from the most consensual majorityGrade to the least.

Constructors

MajorityValue 

Fields

Instances
Eq grade => Eq (MajorityValue grade) Source # 
Instance details

Defined in Majority.Value

Methods

(==) :: MajorityValue grade -> MajorityValue grade -> Bool #

(/=) :: MajorityValue grade -> MajorityValue grade -> Bool #

Ord grade => Ord (MajorityValue grade) Source # 
Instance details

Defined in Majority.Value

Methods

compare :: MajorityValue grade -> MajorityValue grade -> Ordering #

(<) :: MajorityValue grade -> MajorityValue grade -> Bool #

(<=) :: MajorityValue grade -> MajorityValue grade -> Bool #

(>) :: MajorityValue grade -> MajorityValue grade -> Bool #

(>=) :: MajorityValue grade -> MajorityValue grade -> Bool #

max :: MajorityValue grade -> MajorityValue grade -> MajorityValue grade #

min :: MajorityValue grade -> MajorityValue grade -> MajorityValue grade #

Show grade => Show (MajorityValue grade) Source # 
Instance details

Defined in Majority.Value

Methods

showsPrec :: Int -> MajorityValue grade -> ShowS #

show :: MajorityValue grade -> String #

showList :: [MajorityValue grade] -> ShowS #

Type Middle

data Middle grade Source #

A centered middle of a Merit. Needed to handle the Fractional capabilities of a Share.

By construction in majorityValue, lowGrade is always lower or equal to highGrade.

Constructors

Middle 

Fields

Instances
Eq grade => Eq (Middle grade) Source # 
Instance details

Defined in Majority.Value

Methods

(==) :: Middle grade -> Middle grade -> Bool #

(/=) :: Middle grade -> Middle grade -> Bool #

Ord grade => Ord (Middle grade) Source # 
Instance details

Defined in Majority.Value

Methods

compare :: Middle grade -> Middle grade -> Ordering #

(<) :: Middle grade -> Middle grade -> Bool #

(<=) :: Middle grade -> Middle grade -> Bool #

(>) :: Middle grade -> Middle grade -> Bool #

(>=) :: Middle grade -> Middle grade -> Bool #

max :: Middle grade -> Middle grade -> Middle grade #

min :: Middle grade -> Middle grade -> Middle grade #

Show grade => Show (Middle grade) Source # 
Instance details

Defined in Majority.Value

Methods

showsPrec :: Int -> Middle grade -> ShowS #

show :: Middle grade -> String #

showList :: [Middle grade] -> ShowS #

majorityValue :: Ord grade => Merit grade -> MajorityValue grade Source #

The majorityValue is the list of the Middles of the Merit of a choice, from the most consensual to the least.

majorityGrade :: Show grade => Ord grade => Merit grade -> Maybe grade Source #

The majorityGrade is the lower middlemost (also known as median by experts) of the grades given to a choice by the Judges.

It is the highest grade approved by an absolute majority of the Judges: more than 50% of the Judges give the choice at least a grade of majorityGrade, but every grade lower than majorityGrade is rejected by an absolute majority Thus the majorityGrade of a choice is the final grade wished by the majority.

The majorityGrade is necessarily a word that belongs to grades, and it has an absolute meaning.

When the number of Judges is even, there is a middle-interval (which can, of course, be reduced to a single grade if the two middle grades are the same), then the majorityGrade is the lowest grade of the middle-interval (the “lower middlemost” when there are two in the middle), which is the only one which respects consensus: any other choice whose grades are all within this middle-interval, has a majorityGrade which is greater or equal to this lower middlemost.

Type MajorityRanking

type MajorityRanking choice grade = [(choice, MajorityValue grade)] Source #

majorityValueByChoice :: Show grade => Ord grade => MeritByChoice choice grade -> HashMap choice (MajorityValue grade) Source #

majorityRanking :: Show grade => Ord grade => MeritByChoice choice grade -> MajorityRanking choice grade Source #

The majorityRanking ranks all the choices on the basis of their grades.

Choice A ranks higher than choice B in the majorityRanking if and only if A’s majorityValue is lexicographically above B’s. There can be no tie unless two choices have precisely the same majorityValues.

Orphan instances

(Show grade, Ord grade) => Ord (Merit grade) Source # 
Instance details

Methods

compare :: Merit grade -> Merit grade -> Ordering #

(<) :: Merit grade -> Merit grade -> Bool #

(<=) :: Merit grade -> Merit grade -> Bool #

(>) :: Merit grade -> Merit grade -> Bool #

(>=) :: Merit grade -> Merit grade -> Bool #

max :: Merit grade -> Merit grade -> Merit grade #

min :: Merit grade -> Merit grade -> Merit grade #