compaREST-0.1.0.1: Compatibility checker for OpenAPI
Safe HaskellNone
LanguageHaskell2010

Data.OpenApi.Compare.Paths

Contents

Description

Utilities for traversing heterogeneous trees. A heterogeneous tree is a collection of datatypes that "contain" eachother in some form of tree structure.

Synopsis

Documentation

type NiceQuiver (q :: k -> j -> Type) (a :: k) (b :: j) = (Typeable q, Typeable a, Typeable b, Ord (q a b), Show (q a b), AdditionalQuiverConstraints q a b) Source #

type family AdditionalQuiverConstraints (q :: k -> j -> Type) (a :: k) (b :: j) :: Constraint Source #

Instances

Instances details
type AdditionalQuiverConstraints Step (_1 :: Type) (_2 :: Type) Source # 
Instance details

Defined in Data.OpenApi.Compare.Subtree

type AdditionalQuiverConstraints Step (_1 :: Type) (_2 :: Type) = ()
type AdditionalQuiverConstraints Behave (a :: BehaviorLevel) (b :: BehaviorLevel) Source # 
Instance details

Defined in Data.OpenApi.Compare.Behavior

data Paths (q :: k -> k -> Type) (a :: k) (b :: k) where Source #

All the possible ways to navigate between nodes in a heterogeneous tree form a quiver. The hom-sets of the free category constructed from this quiver are the sets of various multi-step paths between nodes. This is similar to a list, but indexed. The list is in reverse because in practice we append items at the end one at a time.

Constructors

Root :: Paths q a a 
Snoc :: NiceQuiver q b c => Paths q a b -> !(q b c) -> Paths q a c infixl 5 

Instances

Instances details
Subtree PathFragmentParam Source # 
Instance details

Defined in Data.OpenApi.Compare.Validate.PathFragment

Category (Paths q :: k -> k -> Type) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

id :: forall (a :: k0). Paths q a a #

(.) :: forall (b :: k0) (c :: k0) (a :: k0). Paths q b c -> Paths q a b -> Paths q a c #

TestEquality (Paths q a :: k -> Type) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

testEquality :: forall (a0 :: k0) (b :: k0). Paths q a a0 -> Paths q a b -> Maybe (a0 :~: b) #

Eq (Paths q a b) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

(==) :: Paths q a b -> Paths q a b -> Bool #

(/=) :: Paths q a b -> Paths q a b -> Bool #

Ord (Paths q a b) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

compare :: Paths q a b -> Paths q a b -> Ordering #

(<) :: Paths q a b -> Paths q a b -> Bool #

(<=) :: Paths q a b -> Paths q a b -> Bool #

(>) :: Paths q a b -> Paths q a b -> Bool #

(>=) :: Paths q a b -> Paths q a b -> Bool #

max :: Paths q a b -> Paths q a b -> Paths q a b #

min :: Paths q a b -> Paths q a b -> Paths q a b #

Show (Paths q a b) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

showsPrec :: Int -> Paths q a b -> ShowS #

show :: Paths q a b -> String #

showList :: [Paths q a b] -> ShowS #

type CheckEnv PathFragmentParam Source # 
Instance details

Defined in Data.OpenApi.Compare.Validate.PathFragment

type SubtreeLevel PathFragmentParam Source # 
Instance details

Defined in Data.OpenApi.Compare.Validate.PathFragment

newtype DiffPaths (q :: k -> k -> Type) (a :: k) (b :: k) Source #

Like a differece list, but indexed.

Constructors

DiffPaths (forall c. Paths q c a -> Paths q c b) 

catDiffPaths :: DiffPaths q a b -> DiffPaths q b c -> DiffPaths q a c Source #

data AnItem (q :: k -> k -> Type) (f :: k -> Type) (r :: k) where Source #

An item related to some path relative to the root r.

Constructors

AnItem :: Ord (f a) => Paths q r a -> !(f a) -> AnItem q f r 

Instances

Instances details
Eq (AnItem q f r) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

(==) :: AnItem q f r -> AnItem q f r -> Bool #

(/=) :: AnItem q f r -> AnItem q f r -> Bool #

Typeable r => Ord (AnItem q f r) Source # 
Instance details

Defined in Data.OpenApi.Compare.Paths

Methods

compare :: AnItem q f r -> AnItem q f r -> Ordering #

(<) :: AnItem q f r -> AnItem q f r -> Bool #

(<=) :: AnItem q f r -> AnItem q f r -> Bool #

(>) :: AnItem q f r -> AnItem q f r -> Bool #

(>=) :: AnItem q f r -> AnItem q f r -> Bool #

max :: AnItem q f r -> AnItem q f r -> AnItem q f r #

min :: AnItem q f r -> AnItem q f r -> AnItem q f r #

step :: NiceQuiver q a b => q a b -> Paths q a b Source #

Reexports

(>>>) :: forall k cat (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c infixr 1 #

Left-to-right composition

(<<<) :: forall k cat (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c infixr 1 #

Right-to-left composition