| Copyright | (c) Alexander Vieth, 2015 |
|---|---|
| License | BSD3 |
| Maintainer | aovieth@gmail.com |
| Stability | experimental |
| Portability | non-portable (GHC only) |
| Safe Haskell | None |
| Language | Haskell2010 |
Diplomacy.OrderValidation
Description
Documentation
data ValidityCharacterization g f k where Source
Constructors
| VCNil :: SuitableFunctor f => ValidityCharacterization g f [] | |
| VCCons :: (SuitableFunctor f, SuitableFunctorConstraint f t) => (ArgumentList Identity Identity ts -> TaggedIntersectionOfUnions g f t) -> ValidityCharacterization g f ts -> ValidityCharacterization g f (t : ts) |
Instances
| Typeable ((* -> *) -> (* -> *) -> [*] -> *) ValidityCharacterization |
data ArgumentList g f k where Source
Constructors
| ALNil :: ArgumentList g f [] | |
| ALCons :: g (f t) -> ArgumentList g f ts -> ArgumentList g f (t : ts) |
Instances
| Typeable ((* -> *) -> (* -> *) -> [*] -> *) ArgumentList | |
| Every Eq ts => Eq (ArgumentList Identity Identity ts) | |
| (Every Ord ts, Every Eq ts) => Ord (ArgumentList Identity Identity ts) | |
| Every Show ts => Show (ArgumentList Identity Identity ts) |
data ValidityCriterion phase order where Source
Constructors
Instances
| Eq (ValidityCriterion phase order) | |
| Ord (ValidityCriterion phase order) | |
| Show (ValidityCriterion phase order) |
data SomeValidityCriterion phase where Source
Constructors
| SomeValidityCriterion :: ValidityCriterion phase order -> SomeValidityCriterion phase |
Instances
| Eq (SomeValidityCriterion phase) | |
| Ord (SomeValidityCriterion phase) | |
| Show (SomeValidityCriterion phase) | |
| Typeable (Phase -> *) SomeValidityCriterion |
data AdjustSetValidityCriterion where Source
type ValidityTag phase order = (,) (ValidityCriterion phase order) Source
synthesize :: (SuitableFunctor f, SuitableFunctorConstraint f (ArgumentList Identity Identity ts), SuitableFunctorConstraint f t, ValidityCharacterizationConstraint f ts) => (forall s. g s -> Identity s) -> VOC g f ts t -> f t Source
analyze :: (forall s. g s -> s) -> (forall s. g s -> r) -> r -> (r -> r -> r) -> VOC g f ts t -> t -> r Source
moveVOC :: GreatPower -> Occupation -> VOC (ValidityTag Typical Move) Set `[ProvinceTarget, Subject]` (Order Typical Move) Source
supportVOC :: GreatPower -> Occupation -> VOC (ValidityTag Typical Support) Set `[Subject, ProvinceTarget, Subject]` (Order Typical Support) Source
convoyVOC :: GreatPower -> Occupation -> VOC (ValidityTag Typical Convoy) Set `[ProvinceTarget, Subject, Subject]` (Order Typical Convoy) Source
surrenderVOC :: GreatPower -> Dislodgement -> VOC (ValidityTag Retreat Surrender) Set `[Subject]` (Order Retreat Surrender) Source
withdrawVOC :: GreatPower -> Map Zone (Aligned Unit, SomeResolved OrderObject Typical) -> VOC (ValidityTag Retreat Withdraw) Set `[ProvinceTarget, Subject]` (Order Retreat Withdraw) Source
disbandSubjectVOC :: GreatPower -> Occupation -> VOC (ValidityTag Adjust Disband) Set `[Subject]` Subject Source
buildSubjectVOC :: GreatPower -> Occupation -> Control -> VOC (ValidityTag Adjust Build) Set `[Subject]` Subject Source
continueSubjectVOC :: GreatPower -> Occupation -> VOC (ValidityTag Adjust Continue) Set `[Subject]` Subject Source
adjustSubjectsVOC :: GreatPower -> Occupation -> Control -> AdjustSubjects -> VOC AdjustSetValidityTag Set `[AdjustSubjects]` AdjustSubjects Source