Copyright | (c) Alexander Vieth 2015 |
---|---|
License | BSD3 |
Maintainer | aovieth@gmail.com |
Stability | experimental |
Portability | non-portable (GHC only) |
Safe Haskell | None |
Language | Haskell2010 |
Documentation
data ValidityCharacterization g f k where Source #
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) |
data ArgumentList g f k where Source #
ALNil :: ArgumentList g f '[] | |
ALCons :: g (f t) -> ArgumentList g f ts -> ArgumentList g f (t ': ts) |
data ValidityCriterion phase order where Source #
Eq (ValidityCriterion phase order) Source # | |
Ord (ValidityCriterion phase order) Source # | |
Show (ValidityCriterion phase order) Source # | |
data SomeValidityCriterion phase where Source #
SomeValidityCriterion :: ValidityCriterion phase order -> SomeValidityCriterion phase |
Eq (SomeValidityCriterion phase) Source # | |
Ord (SomeValidityCriterion phase) Source # | |
Show (SomeValidityCriterion phase) Source # | |
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 #