packages feed

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 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