greskell 2.0.2.0 → 2.0.3.0
raw patch · 4 files changed
+371/−1 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Greskell.GTraversal.Gen: ($.) :: Walk c b d -> GTraversal c a b -> GTraversal c a d
+ Data.Greskell.GTraversal.Gen: (&.) :: GTraversal c a b -> Walk c b d -> GTraversal c a d
+ Data.Greskell.GTraversal.Gen: (<$.>) :: Functor f => Walk c b d -> f (GTraversal c a b) -> f (GTraversal c a d)
+ Data.Greskell.GTraversal.Gen: (<*.>) :: Applicative f => f (Walk c b d) -> f (GTraversal c a b) -> f (GTraversal c a d)
+ Data.Greskell.GTraversal.Gen: -- | The end type of the projection.
+ Data.Greskell.GTraversal.Gen: GTraversal :: Greskell (GraphTraversal c s e) -> GTraversal c s e
+ Data.Greskell.GTraversal.Gen: RepeatHead :: RepeatPos
+ Data.Greskell.GTraversal.Gen: RepeatLabel :: Text -> RepeatLabel
+ Data.Greskell.GTraversal.Gen: RepeatTail :: RepeatPos
+ Data.Greskell.GTraversal.Gen: [ByComparatorComp] :: Comparator comp => Greskell comp -> ByComparator (CompareArg comp)
+ Data.Greskell.GTraversal.Gen: [ByComparatorProjComp] :: Comparator comp => ByProjection s (CompareArg comp) -> Greskell comp -> ByComparator s
+ Data.Greskell.GTraversal.Gen: [ByComparatorProj] :: ByProjection s e -> ByComparator s
+ Data.Greskell.GTraversal.Gen: [ByProjection] :: (ProjectionLike p, ToGreskell p) => p -> ByProjection (ProjectionLikeStart p) (ProjectionLikeEnd p)
+ Data.Greskell.GTraversal.Gen: [LabeledByProjection] :: AsLabel a -> ByProjection s a -> LabeledByProjection s
+ Data.Greskell.GTraversal.Gen: [MatchPattern] :: AsLabel a -> Walk Transform a b -> MatchPattern
+ Data.Greskell.GTraversal.Gen: [RepeatEmitT] :: (WalkType cc, WalkType c, Split cc c) => GTraversal cc s e -> RepeatEmit c s
+ Data.Greskell.GTraversal.Gen: [RepeatEmit] :: RepeatEmit c s
+ Data.Greskell.GTraversal.Gen: [RepeatTimes] :: Greskell Int -> RepeatUntil c s
+ Data.Greskell.GTraversal.Gen: [RepeatUntilT] :: (WalkType cc, WalkType c, Split cc c) => GTraversal cc s e -> RepeatUntil c s
+ Data.Greskell.GTraversal.Gen: [unGTraversal] :: GTraversal c s e -> Greskell (GraphTraversal c s e)
+ Data.Greskell.GTraversal.Gen: [unRepeatLabel] :: RepeatLabel -> Text
+ Data.Greskell.GTraversal.Gen: class Lift from to
+ Data.Greskell.GTraversal.Gen: class ProjectionLike p where {
+ Data.Greskell.GTraversal.Gen: class Split c p
+ Data.Greskell.GTraversal.Gen: class ToGTraversal g
+ Data.Greskell.GTraversal.Gen: class WalkType t
+ Data.Greskell.GTraversal.Gen: data AddAnchor s e
+ Data.Greskell.GTraversal.Gen: data ByComparator s
+ Data.Greskell.GTraversal.Gen: data ByProjection s e
+ Data.Greskell.GTraversal.Gen: data Filter
+ Data.Greskell.GTraversal.Gen: data GraphTraversal c s e
+ Data.Greskell.GTraversal.Gen: data GraphTraversalSource
+ Data.Greskell.GTraversal.Gen: data LabeledByProjection s
+ Data.Greskell.GTraversal.Gen: data MatchPattern
+ Data.Greskell.GTraversal.Gen: data MatchResult
+ Data.Greskell.GTraversal.Gen: data RepeatEmit c s
+ Data.Greskell.GTraversal.Gen: data RepeatPos
+ Data.Greskell.GTraversal.Gen: data RepeatUntil c s
+ Data.Greskell.GTraversal.Gen: data SideEffect
+ Data.Greskell.GTraversal.Gen: data Transform
+ Data.Greskell.GTraversal.Gen: data Walk c s e
+ Data.Greskell.GTraversal.Gen: gAddE :: (Vertex vs, Vertex ve, Edge e, WalkType c, Lift SideEffect c) => Greskell Text -> AddAnchor vs ve -> Walk c vs e
+ Data.Greskell.GTraversal.Gen: gAddE' :: (WalkType c, Lift SideEffect c) => Greskell Text -> AddAnchor AVertex AVertex -> Walk c AVertex AEdge
+ Data.Greskell.GTraversal.Gen: gAddV :: (Vertex v, WalkType c, Lift SideEffect c) => Greskell Text -> Walk c a v
+ Data.Greskell.GTraversal.Gen: gAddV' :: (WalkType c, Lift SideEffect c) => Greskell Text -> Walk c a AVertex
+ Data.Greskell.GTraversal.Gen: gAnd :: (ToGTraversal g, WalkType c, WalkType p, Split c p) => [g c s e] -> Walk p s s
+ Data.Greskell.GTraversal.Gen: gAs :: (WalkType c, Lift Transform c) => AsLabel a -> Walk c a a
+ Data.Greskell.GTraversal.Gen: gBarrier :: WalkType c => Maybe (Greskell Int) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gBy :: (ProjectionLike p, ToGreskell p) => p -> ByProjection (ProjectionLikeStart p) (ProjectionLikeEnd p)
+ Data.Greskell.GTraversal.Gen: gBy1 :: (ProjectionLike p, ToGreskell p) => p -> ByComparator (ProjectionLikeStart p)
+ Data.Greskell.GTraversal.Gen: gBy2 :: (ProjectionLike p, ToGreskell p, Comparator comp, ProjectionLikeEnd p ~ CompareArg comp) => p -> Greskell comp -> ByComparator (ProjectionLikeStart p)
+ Data.Greskell.GTraversal.Gen: gByL :: (ProjectionLike p, ToGreskell p) => AsLabel (ProjectionLikeEnd p) -> p -> LabeledByProjection (ProjectionLikeStart p)
+ Data.Greskell.GTraversal.Gen: gChoose3 :: (ToGTraversal g, Split cc c, WalkType cc, WalkType c) => g cc s ep -> g c s e -> g c s e -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gCoalesce :: (ToGTraversal g, Split cc c, Lift Transform c, WalkType c, WalkType cc) => [g cc s e] -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gConstant :: (WalkType c, Lift Transform c) => Greskell a -> Walk c s a
+ Data.Greskell.GTraversal.Gen: gCount :: (WalkType c, Lift Transform c) => Walk c a Int
+ Data.Greskell.GTraversal.Gen: gCyclicPath :: WalkType c => Walk c a a
+ Data.Greskell.GTraversal.Gen: gDedup :: (WalkType c, Lift Transform c) => Maybe (ByProjection s e) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gDedupN :: (WalkType c, Lift Transform c) => AsLabel a -> [AsLabel a] -> Maybe (ByProjection a e) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gDrop :: (Element e, WalkType c, Lift SideEffect c) => Walk c e e
+ Data.Greskell.GTraversal.Gen: gDropP :: (Property p, WalkType c, Lift SideEffect c) => Walk c (p a) (p a)
+ Data.Greskell.GTraversal.Gen: gElementMap :: (Element s, WalkType c, Lift Transform c) => Keys s -> Walk c s (PMap Single GValue)
+ Data.Greskell.GTraversal.Gen: gEmitHead :: Maybe (RepeatPos, RepeatEmit c s)
+ Data.Greskell.GTraversal.Gen: gEmitHeadT :: (ToGTraversal g, WalkType c, WalkType cc, Split cc c) => g cc s e -> Maybe (RepeatPos, RepeatEmit c s)
+ Data.Greskell.GTraversal.Gen: gEmitTail :: Maybe (RepeatPos, RepeatEmit c s)
+ Data.Greskell.GTraversal.Gen: gEmitTailT :: (ToGTraversal g, WalkType c, WalkType cc, Split cc c) => g cc s e -> Maybe (RepeatPos, RepeatEmit c s)
+ Data.Greskell.GTraversal.Gen: gFilter :: (ToGTraversal g, WalkType c, WalkType p, Split c p) => g c s e -> Walk p s s
+ Data.Greskell.GTraversal.Gen: gFlatMap :: (Lift Transform c, Split cc c, ToGTraversal g, WalkType c, WalkType cc) => g cc s e -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gFold :: (WalkType c, Lift Transform c) => Walk c a [a]
+ Data.Greskell.GTraversal.Gen: gFrom :: (ToGTraversal g, WalkType c, Lift c Transform) => g c s e -> AddAnchor s e
+ Data.Greskell.GTraversal.Gen: gHas1 :: (WalkType c, Element s) => Key s v -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHas2 :: (WalkType c, Element s) => Key s v -> Greskell v -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHas2P :: (WalkType c, Element s) => Key s v -> Greskell (P v) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHasId :: (Element s, WalkType c) => Greskell (ElementID s) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHasIdP :: (Element s, WalkType c) => Greskell (P (ElementID s)) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHasKey :: (Element (p v), Property p, WalkType c) => Greskell Text -> Walk c (p v) (p v)
+ Data.Greskell.GTraversal.Gen: gHasKeyP :: (Element (p v), Property p, WalkType c) => Greskell (P Text) -> Walk c (p v) (p v)
+ Data.Greskell.GTraversal.Gen: gHasLabel :: (Element s, WalkType c) => Greskell Text -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHasLabelP :: (Element s, WalkType c) => Greskell (P Text) -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gHasValue :: (Element (p v), Property p, WalkType c) => Greskell v -> Walk c (p v) (p v)
+ Data.Greskell.GTraversal.Gen: gHasValueP :: (Element (p v), Property p, WalkType c) => Greskell (P v) -> Walk c (p v) (p v)
+ Data.Greskell.GTraversal.Gen: gId :: (Element s, WalkType c, Lift Transform c) => Walk c s (ElementID s)
+ Data.Greskell.GTraversal.Gen: gIdentity :: WalkType c => Walk c s s
+ Data.Greskell.GTraversal.Gen: gIn :: (Vertex v1, Vertex v2, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v1 v2
+ Data.Greskell.GTraversal.Gen: gIn' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AVertex
+ Data.Greskell.GTraversal.Gen: gInE :: (Vertex v, Edge e, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v e
+ Data.Greskell.GTraversal.Gen: gInE' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AEdge
+ Data.Greskell.GTraversal.Gen: gInV :: (Edge e, Vertex v, WalkType c, Lift Transform c) => Walk c e v
+ Data.Greskell.GTraversal.Gen: gInV' :: (Edge e, WalkType c, Lift Transform c) => Walk c e AVertex
+ Data.Greskell.GTraversal.Gen: gIs :: WalkType c => Greskell v -> Walk c v v
+ Data.Greskell.GTraversal.Gen: gIsP :: WalkType c => Greskell (P v) -> Walk c v v
+ Data.Greskell.GTraversal.Gen: gIterate :: WalkType c => GTraversal c s e -> GTraversal c s ()
+ Data.Greskell.GTraversal.Gen: gLabel :: (Element s, WalkType c, Lift Transform c) => Walk c s Text
+ Data.Greskell.GTraversal.Gen: gLimit :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gLocal :: (ToGTraversal g, WalkType c) => g c s e -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gLoops :: (WalkType c, Lift Transform c) => Maybe RepeatLabel -> Walk c s Int
+ Data.Greskell.GTraversal.Gen: gMatch :: (WalkType c, Lift Transform c) => Logic MatchPattern -> Walk c a MatchResult
+ Data.Greskell.GTraversal.Gen: gNot :: (ToGTraversal g, WalkType c, WalkType p, Split c p) => g c s e -> Walk p s s
+ Data.Greskell.GTraversal.Gen: gOr :: (ToGTraversal g, WalkType c, WalkType p, Split c p) => [g c s e] -> Walk p s s
+ Data.Greskell.GTraversal.Gen: gOrder :: (WalkType c, Lift Transform c) => [ByComparator s] -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gOut :: (Vertex v1, Vertex v2, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v1 v2
+ Data.Greskell.GTraversal.Gen: gOut' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AVertex
+ Data.Greskell.GTraversal.Gen: gOutE :: (Vertex v, Edge e, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v e
+ Data.Greskell.GTraversal.Gen: gOutE' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AEdge
+ Data.Greskell.GTraversal.Gen: gOutV :: (Edge e, Vertex v, WalkType c, Lift Transform c) => Walk c e v
+ Data.Greskell.GTraversal.Gen: gOutV' :: (Edge e, WalkType c, Lift Transform c) => Walk c e AVertex
+ Data.Greskell.GTraversal.Gen: gPath :: (WalkType c, Lift Transform c) => Walk c s (Path GValue)
+ Data.Greskell.GTraversal.Gen: gPathBy :: (WalkType c, Lift Transform c) => ByProjection a b -> [ByProjection a b] -> Walk c s (Path b)
+ Data.Greskell.GTraversal.Gen: gProject :: (WalkType c, Lift Transform c) => LabeledByProjection s -> [LabeledByProjection s] -> Walk c s (PMap Single GValue)
+ Data.Greskell.GTraversal.Gen: gProperties :: (Element s, Property p, ElementProperty s ~ p, WalkType c, Lift Transform c) => [Key s v] -> Walk c s (p v)
+ Data.Greskell.GTraversal.Gen: gProperty :: (Element e, WalkType c, Lift SideEffect c) => Key e v -> Greskell v -> Walk c e e
+ Data.Greskell.GTraversal.Gen: gPropertyV :: (Vertex e, vp ~ ElementProperty e, Property vp, Element (vp v), WalkType c, Lift SideEffect c) => Maybe (Greskell Cardinality) -> Key e v -> Greskell v -> [KeyValue (vp v)] -> Walk c e e
+ Data.Greskell.GTraversal.Gen: gRange :: (WalkType c, Lift Transform c) => Greskell Int -> Greskell Int -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gRepeat :: (ToGTraversal g, WalkType c) => Maybe RepeatLabel -> Maybe (RepeatPos, RepeatUntil c s) -> Maybe (RepeatPos, RepeatEmit c s) -> g c s s -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gSelect1 :: (WalkType c, Lift Transform c) => AsLabel a -> Walk c s a
+ Data.Greskell.GTraversal.Gen: gSelectBy1 :: (WalkType c, Lift Transform c) => AsLabel a -> ByProjection a b -> Walk c s b
+ Data.Greskell.GTraversal.Gen: gSelectByN :: (WalkType c, Lift Transform c) => AsLabel a -> AsLabel a -> [AsLabel a] -> ByProjection a b -> Walk c s (SelectedMap b)
+ Data.Greskell.GTraversal.Gen: gSelectN :: (WalkType c, Lift Transform c) => AsLabel a -> AsLabel b -> [AsLabel c] -> Walk c s (SelectedMap GValue)
+ Data.Greskell.GTraversal.Gen: gSideEffect :: (ToGTraversal g, WalkType c, WalkType p, Split c p) => g c s e -> Walk p s s
+ Data.Greskell.GTraversal.Gen: gSimplePath :: WalkType c => Walk c a a
+ Data.Greskell.GTraversal.Gen: gSkip :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gTail :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s
+ Data.Greskell.GTraversal.Gen: gTimes :: Greskell Int -> Maybe (RepeatPos, RepeatUntil c s)
+ Data.Greskell.GTraversal.Gen: gTo :: (ToGTraversal g, WalkType c, Lift c Transform) => g c s e -> AddAnchor s e
+ Data.Greskell.GTraversal.Gen: gUnfold :: (AsIterator a, WalkType c, Lift Transform c) => Walk c a (IteratorItem a)
+ Data.Greskell.GTraversal.Gen: gUnion :: (ToGTraversal g, WalkType c) => [g c s e] -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gUntilHead :: (ToGTraversal g, WalkType c, WalkType cc, Split cc c) => g cc s e -> Maybe (RepeatPos, RepeatUntil c s)
+ Data.Greskell.GTraversal.Gen: gUntilTail :: (ToGTraversal g, WalkType c, WalkType cc, Split cc c) => g cc s e -> Maybe (RepeatPos, RepeatUntil c s)
+ Data.Greskell.GTraversal.Gen: gV :: (Vertex v, WalkType c, Lift Transform c) => [Greskell (ElementID v)] -> Walk c s v
+ Data.Greskell.GTraversal.Gen: gV' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AVertex)] -> Walk c s AVertex
+ Data.Greskell.GTraversal.Gen: gValueMap :: (Element s, WalkType c, Lift Transform c) => Keys s -> Walk c s (PMap (ElementPropertyContainer s) GValue)
+ Data.Greskell.GTraversal.Gen: gValues :: (Element s, WalkType c, Lift Transform c) => [Key s e] -> Walk c s e
+ Data.Greskell.GTraversal.Gen: gWhereP1 :: WalkType c => Greskell (LabeledP a) -> Maybe (ByProjection a b) -> Walk c a a
+ Data.Greskell.GTraversal.Gen: gWhereP2 :: WalkType c => AsLabel a -> Greskell (LabeledP a) -> Maybe (ByProjection a b) -> Walk c x x
+ Data.Greskell.GTraversal.Gen: infixl 1 &.
+ Data.Greskell.GTraversal.Gen: infixr 0 <*.>
+ Data.Greskell.GTraversal.Gen: liftWalk :: (ToGTraversal g, WalkType from, WalkType to, Lift from to) => g from s e -> g to s e
+ Data.Greskell.GTraversal.Gen: mPattern :: (WalkType c, Lift c Transform) => AsLabel a -> Walk c a b -> Logic MatchPattern
+ Data.Greskell.GTraversal.Gen: modulateWith :: WalkType c => Walk c s e -> [Walk c e e] -> Walk c s e
+ Data.Greskell.GTraversal.Gen: newtype GTraversal c s e
+ Data.Greskell.GTraversal.Gen: newtype RepeatLabel
+ Data.Greskell.GTraversal.Gen: sAddV :: (Vertex v, WalkType c, Lift SideEffect c) => Greskell Text -> Greskell GraphTraversalSource -> GTraversal c () v
+ Data.Greskell.GTraversal.Gen: sAddV' :: (WalkType c, Lift SideEffect c) => Greskell Text -> Greskell GraphTraversalSource -> GTraversal c () AVertex
+ Data.Greskell.GTraversal.Gen: sE :: (Edge e, WalkType c, Lift Transform c) => [Greskell (ElementID e)] -> Greskell GraphTraversalSource -> GTraversal c () e
+ Data.Greskell.GTraversal.Gen: sE' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AEdge)] -> Greskell GraphTraversalSource -> GTraversal c () AEdge
+ Data.Greskell.GTraversal.Gen: sV :: (Vertex v, WalkType c, Lift Transform c) => [Greskell (ElementID v)] -> Greskell GraphTraversalSource -> GTraversal c () v
+ Data.Greskell.GTraversal.Gen: sV' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AVertex)] -> Greskell GraphTraversalSource -> GTraversal c () AVertex
+ Data.Greskell.GTraversal.Gen: source :: Text -> Greskell GraphTraversalSource
+ Data.Greskell.GTraversal.Gen: toGTraversal :: (ToGTraversal g, WalkType c) => g c s e -> GTraversal c s e
+ Data.Greskell.GTraversal.Gen: type ProjectionLikeEnd p;
+ Data.Greskell.GTraversal.Gen: type ProjectionLikeStart p;
+ Data.Greskell.GTraversal.Gen: unsafeCastEnd :: (ToGTraversal g, WalkType c) => g c s e1 -> g c s e2
+ Data.Greskell.GTraversal.Gen: unsafeCastStart :: (ToGTraversal g, WalkType c) => g c s1 e -> g c s2 e
+ Data.Greskell.GTraversal.Gen: unsafeGTraversal :: Text -> GTraversal c s e
+ Data.Greskell.GTraversal.Gen: unsafeWalk :: WalkType c => Text -> [Text] -> Walk c s e
+ Data.Greskell.GTraversal.Gen: }
Files
- ChangeLog.md +4/−0
- greskell.cabal +2/−1
- src/Data/Greskell.hs +1/−0
- src/Data/Greskell/GTraversal/Gen.hs +364/−0
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for greskell +## 2.0.3.0 -- 2023-02-24++* Add `GTraversal.Gen` module (see https://github.com/debug-ito/greskell/issues/15 )+ ## 2.0.2.0 -- 2023-01-11 * Add `oDesc` and `oAsc` functions (`Gremlin` module) ( https://github.com/debug-ito/greskell/pull/14 )
greskell.cabal view
@@ -1,5 +1,5 @@ name: greskell-version: 2.0.2.0+version: 2.0.3.0 author: Toshio Ito <debug.ito@gmail.com> maintainer: Toshio Ito <debug.ito@gmail.com> license: BSD3@@ -33,6 +33,7 @@ Data.Greskell.Graph, Data.Greskell.Graph.PropertyMap, Data.Greskell.GTraversal,+ Data.Greskell.GTraversal.Gen, Data.Greskell.AsLabel, Data.Greskell.Extra, Data.Greskell.PMap,
src/Data/Greskell.hs view
@@ -14,6 +14,7 @@ -- class of non-empty containers. -- - "Data.Greskell.Logic": Logic type, which is a general-purpose logic tree data structure. -- - "Data.Greskell.Graph.PropertyMap": deprecated PropertyMap class.+-- - "Data.Greskell.GTraversal.Gen": an experimental module that has generalized versions of Gremlin traversals defined in "Data.Greskell.GTraversal". module Data.Greskell ( module Data.Greskell.Greskell , module Data.Greskell.Binder
+ src/Data/Greskell/GTraversal/Gen.hs view
@@ -0,0 +1,364 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TypeFamilies #-}+-- | __This module is experimental. It may have breaking changes in future.__+--+-- This module has Gremlin traversals defined in 'Data.Greskell.GTraversal' generalized on the+-- walk type. It may save you from calling 'liftWalk' manually.+--+-- @since 2.0.3.0+module Data.Greskell.GTraversal.Gen+ ( -- * Types+ -- ** GraphTraversal and others+ GTraversal (..)+ , GraphTraversal+ , ToGTraversal (..)+ , Walk+ , GraphTraversalSource+ -- ** Walk types+ , WalkType+ , Filter+ , Transform+ , SideEffect+ , Lift+ , Split+ -- * GraphTraversalSource+ , source+ , sV+ , sV'+ , sE+ , sE'+ , sAddV+ , sAddV'+ -- * GTraversal+ , (&.)+ , ($.)+ , (<$.>)+ , (<*.>)+ , gIterate+ , unsafeGTraversal+ -- * Walk/Steps+ , unsafeWalk+ , modulateWith+ -- ** Filter steps+ , gIdentity+ , gFilter+ , gCyclicPath+ , gSimplePath+ -- ** Is step+ , gIs+ , gIsP+ -- ** Has steps+ , gHas1+ , gHas2+ , gHas2P+ , gHasLabel+ , gHasLabelP+ , gHasId+ , gHasIdP+ , gHasKey+ , gHasKeyP+ , gHasValue+ , gHasValueP+ -- ** Logic steps+ , gAnd+ , gOr+ , gNot+ -- ** Where step+ , gWhereP1+ , gWhereP2+ -- ** Sorting steps+ , gOrder+ -- ** Paging steps+ , gRange+ , gLimit+ , gTail+ , gSkip+ -- ** Repeat step+ , gRepeat+ , gTimes+ , gUntilHead+ , gUntilTail+ , gEmitHead+ , gEmitTail+ , gEmitHeadT+ , gEmitTailT+ , gLoops+ , RepeatUntil (..)+ , RepeatEmit (..)+ , RepeatPos (..)+ , RepeatLabel (..)+ -- ** Branching steps+ , gLocal+ , gUnion+ , gCoalesce+ , gChoose3+ -- ** Barrier steps+ , gBarrier+ , gDedup+ , gDedupN+ -- ** Transformation steps+ , gFlatMap+ , gV+ , gV'+ , gConstant+ , gProject+ -- ** As step+ , gAs+ -- ** Accessor steps+ , gValues+ , gProperties+ , gId+ , gLabel+ , gValueMap+ , gElementMap+ , gSelect1+ , gSelectN+ , gSelectBy1+ , gSelectByN+ , gUnfold+ , gPath+ , gPathBy+ -- ** Summarizing steps+ , gFold+ , gCount+ -- ** Graph traversal steps+ , gOut+ , gOut'+ , gOutE+ , gOutE'+ , gOutV+ , gOutV'+ , gIn+ , gIn'+ , gInE+ , gInE'+ , gInV+ , gInV'+ -- ** Match step+ , gMatch+ , MatchPattern (..)+ , mPattern+ , MatchResult+ -- ** Side-effect steps+ , gSideEffect+ -- ** Graph manipulation steps+ , gAddV+ , gAddV'+ , gAddE+ , gAddE'+ , AddAnchor+ , gFrom+ , gTo+ , gDrop+ , gDropP+ , gProperty+ , gPropertyV+ -- ** @.by@ steps+ , ByProjection (..)+ , ProjectionLike (..)+ , ByComparator (..)+ , LabeledByProjection (..)+ , gBy+ , gBy1+ , gBy2+ , gByL+ ) where++import Data.Text (Text)++import Data.Greskell.AsIterator (AsIterator (IteratorItem))+import Data.Greskell.AsLabel (AsLabel, LabeledP, SelectedMap)+import Data.Greskell.Graph (AEdge, AVertex, Cardinality, Edge, Element (..),+ ElementID, Key, KeyValue, Keys, Path, Property, Vertex)+import Data.Greskell.GraphSON (GValue)+import Data.Greskell.Greskell (Greskell)+import Data.Greskell.GTraversal (AddAnchor, ByComparator (..), ByProjection (..), Filter,+ GTraversal (..), GraphTraversal, GraphTraversalSource,+ LabeledByProjection (..), Lift, MatchPattern (..),+ MatchResult, ProjectionLike (..), RepeatEmit (..),+ RepeatLabel (..), RepeatPos (..), RepeatUntil (..),+ SideEffect, Split, ToGTraversal (..), Transform, Walk,+ WalkType, gAnd, gBarrier, gBy, gBy1, gBy2, gByL,+ gChoose3, gCoalesce, gCyclicPath, gEmitHead, gEmitHeadT,+ gEmitTail, gEmitTailT, gFilter, gFlatMap, gHas1, gHas2,+ gHas2P, gHasId, gHasIdP, gHasKey, gHasKeyP, gHasLabel,+ gHasLabelP, gHasValue, gHasValueP, gIdentity, gIs, gIsP,+ gIterate, gLocal, gNot, gOr, gRepeat, gSideEffect,+ gSimplePath, gTimes, gUnion, gUntilHead, gUntilTail,+ gWhereP1, gWhereP2, mPattern, modulateWith, source,+ unsafeGTraversal, unsafeWalk, ($.), (&.), (<$.>), (<*.>))+import qualified Data.Greskell.GTraversal as G+import Data.Greskell.Logic (Logic)+import Data.Greskell.PMap (PMap, Single)++sV :: (Vertex v, WalkType c, Lift Transform c) => [Greskell (ElementID v)] -> Greskell GraphTraversalSource -> GTraversal c () v+sV a b = liftWalk $ G.sV a b++sV' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AVertex)] -> Greskell GraphTraversalSource -> GTraversal c () AVertex+sV' = sV++sE :: (Edge e, WalkType c, Lift Transform c) => [Greskell (ElementID e)] -> Greskell GraphTraversalSource -> GTraversal c () e+sE a b = liftWalk $ G.sE a b++sE' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AEdge)] -> Greskell GraphTraversalSource -> GTraversal c () AEdge+sE' = sE++sAddV :: (Vertex v, WalkType c, Lift SideEffect c) => Greskell Text -> Greskell GraphTraversalSource -> GTraversal c () v+sAddV a b = liftWalk $ G.sAddV a b++sAddV' :: (WalkType c, Lift SideEffect c) => Greskell Text -> Greskell GraphTraversalSource -> GTraversal c () AVertex+sAddV' = sAddV++gOrder :: (WalkType c, Lift Transform c) => [ByComparator s] -> Walk c s s+gOrder b = liftWalk $ G.gOrder b++gRange :: (WalkType c, Lift Transform c) => Greskell Int -> Greskell Int -> Walk c s s+gRange a b = liftWalk $ G.gRange a b++gLimit :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s+gLimit a = liftWalk $ G.gLimit a++gTail :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s+gTail a = liftWalk $ G.gTail a++gSkip :: (WalkType c, Lift Transform c) => Greskell Int -> Walk c s s+gSkip a = liftWalk $ G.gSkip a++gLoops :: (WalkType c, Lift Transform c) => Maybe RepeatLabel -> Walk c s Int+gLoops a = liftWalk $ G.gLoops a++gDedup :: (WalkType c, Lift Transform c) => Maybe (ByProjection s e) -> Walk c s s+gDedup a = liftWalk $ G.gDedup a++gDedupN :: (WalkType c, Lift Transform c) => AsLabel a -> [AsLabel a] -> Maybe (ByProjection a e) -> Walk c s s+gDedupN a b c = liftWalk $ G.gDedupN a b c++gV :: (Vertex v, WalkType c, Lift Transform c) => [Greskell (ElementID v)] -> Walk c s v+gV a = liftWalk $ G.gV a++gV' :: (WalkType c, Lift Transform c) => [Greskell (ElementID AVertex)] -> Walk c s AVertex+gV' = gV++gConstant :: (WalkType c, Lift Transform c) => Greskell a -> Walk c s a+gConstant a = liftWalk $ G.gConstant a++gProject :: (WalkType c, Lift Transform c) => LabeledByProjection s -> [LabeledByProjection s] -> Walk c s (PMap Single GValue)+gProject a b = liftWalk $ G.gProject a b++gAs :: (WalkType c, Lift Transform c) => AsLabel a -> Walk c a a+gAs a = liftWalk $ G.gAs a++gValues :: (Element s, WalkType c, Lift Transform c) => [Key s e] -> Walk c s e+gValues a = liftWalk $ G.gValues a++gProperties :: (Element s, Property p, ElementProperty s ~ p, WalkType c, Lift Transform c) => [Key s v] -> Walk c s (p v)+gProperties a = liftWalk $ G.gProperties a++gId :: (Element s, WalkType c, Lift Transform c) => Walk c s (ElementID s)+gId = liftWalk G.gId++gLabel :: (Element s, WalkType c, Lift Transform c) => Walk c s Text+gLabel = liftWalk G.gLabel++gValueMap :: (Element s, WalkType c, Lift Transform c) => Keys s -> Walk c s (PMap (ElementPropertyContainer s) GValue)+gValueMap a = liftWalk $ G.gValueMap a++gElementMap :: (Element s, WalkType c, Lift Transform c) => Keys s -> Walk c s (PMap Single GValue)+gElementMap a = liftWalk $ G.gElementMap a++gSelect1 :: (WalkType c, Lift Transform c) => AsLabel a -> Walk c s a+gSelect1 a = liftWalk $ G.gSelect1 a++gSelectN :: (WalkType c, Lift Transform c) => AsLabel a -> AsLabel b -> [AsLabel c] -> Walk c s (SelectedMap GValue)+gSelectN a b c = liftWalk $ G.gSelectN a b c++gSelectBy1 :: (WalkType c, Lift Transform c) => AsLabel a -> ByProjection a b -> Walk c s b+gSelectBy1 a b = liftWalk $ G.gSelectBy1 a b++gSelectByN :: (WalkType c, Lift Transform c) => AsLabel a -> AsLabel a -> [AsLabel a] -> ByProjection a b -> Walk c s (SelectedMap b)+gSelectByN a b c d = liftWalk $ G.gSelectByN a b c d++gUnfold :: (AsIterator a, WalkType c, Lift Transform c) => Walk c a (IteratorItem a)+gUnfold = liftWalk $ G.gUnfold++gPath :: (WalkType c, Lift Transform c) => Walk c s (Path GValue)+gPath = liftWalk $ G.gPath++gPathBy :: (WalkType c, Lift Transform c) => ByProjection a b -> [ByProjection a b] -> Walk c s (Path b)+gPathBy a b = liftWalk $ G.gPathBy a b++gFold :: (WalkType c, Lift Transform c) => Walk c a [a]+gFold = liftWalk $ G.gFold++gCount :: (WalkType c, Lift Transform c) => Walk c a Int+gCount = liftWalk $ G.gCount++gOut :: (Vertex v1, Vertex v2, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v1 v2+gOut a = liftWalk $ G.gOut a++gOut' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AVertex+gOut' = gOut++gOutE :: (Vertex v, Edge e, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v e+gOutE a = liftWalk $ G.gOutE a++gOutE' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AEdge+gOutE' = gOutE++gOutV :: (Edge e, Vertex v, WalkType c, Lift Transform c) => Walk c e v+gOutV = liftWalk $ G.gOutV++gOutV' :: (Edge e, WalkType c, Lift Transform c) => Walk c e AVertex+gOutV' = gOutV++gIn :: (Vertex v1, Vertex v2, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v1 v2+gIn a = liftWalk $ G.gIn a++gIn' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AVertex+gIn' = gIn++gInE :: (Vertex v, Edge e, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v e+gInE a = liftWalk $ G.gInE a++gInE' :: (Vertex v, WalkType c, Lift Transform c) => [Greskell Text] -> Walk c v AEdge+gInE' = gInE++gInV :: (Edge e, Vertex v, WalkType c, Lift Transform c) => Walk c e v+gInV = liftWalk $ G.gInV++gInV' :: (Edge e, WalkType c, Lift Transform c) => Walk c e AVertex+gInV' = gInV++gMatch :: (WalkType c, Lift Transform c) => Logic MatchPattern -> Walk c a MatchResult+gMatch a = liftWalk $ G.gMatch a++gAddV :: (Vertex v, WalkType c, Lift SideEffect c) => Greskell Text -> Walk c a v+gAddV a = liftWalk $ G.gAddV a++gAddV' :: (WalkType c, Lift SideEffect c) => Greskell Text -> Walk c a AVertex+gAddV' = gAddV++gAddE :: (Vertex vs, Vertex ve, Edge e, WalkType c, Lift SideEffect c) => Greskell Text -> AddAnchor vs ve -> Walk c vs e+gAddE a b = liftWalk $ G.gAddE a b++gAddE' :: (WalkType c, Lift SideEffect c) => Greskell Text -> AddAnchor AVertex AVertex -> Walk c AVertex AEdge+gAddE' = gAddE++gFrom :: (ToGTraversal g, WalkType c, Lift c Transform) => g c s e -> AddAnchor s e+gFrom a = G.gFrom $ liftWalk a++gTo :: (ToGTraversal g, WalkType c, Lift c Transform) => g c s e -> AddAnchor s e+gTo a = G.gTo $ liftWalk a++gDrop :: (Element e, WalkType c, Lift SideEffect c) => Walk c e e+gDrop = liftWalk G.gDrop++gDropP :: (Property p, WalkType c, Lift SideEffect c) => Walk c (p a) (p a)+gDropP = liftWalk G.gDropP++gProperty :: (Element e, WalkType c, Lift SideEffect c) => Key e v -> Greskell v -> Walk c e e+gProperty a b = liftWalk $ G.gProperty a b++gPropertyV :: (Vertex e, vp ~ ElementProperty e, Property vp, Element (vp v), WalkType c, Lift SideEffect c)+ => Maybe (Greskell Cardinality) -> Key e v -> Greskell v -> [KeyValue (vp v)] -> Walk c e e+gPropertyV a b c d = liftWalk $ G.gPropertyV a b c d