greskell
Haskell binding for Gremlin graph query language
https://github.com/debug-ito/greskell/
| LTS Haskell 24.18: | 2.0.3.3 | 
| Stackage Nightly 2025-11-04: | 2.0.3.3 | 
| Latest on Hackage: | 2.0.3.3 | 
greskell-2.0.3.3@sha256:dba9e99d4fa353746ee41996d1b45c5fdc29d9358f4a30b7ff7ce2bd47654314,7424Module documentation for 2.0.3.3
greskell
Haskell binding for Gremlin query language.
See the package description, or project README.
Author
Toshio Ito [email protected]
Changes
Revision history for greskell
2.0.3.3 – 2025-01-30
- Binder: now 
newBindproduces an expression like((__v0)), that is, a variable name wrapped with double parens. (see https://github.com/debug-ito/greskell/issues/18 ) While this is basically backward-compatible, it can break a user code if it depends on the internal of theGreskellreturned bynewBind. - Support ghc-9.12 (base-4.21).
 
2.0.3.2 – 2024-11-05
- Bump dependency version bounds.
 
2.0.3.1 – 2024-09-12
- Update dependency version bounds with cabal-plan-bounds. This adds support for new packages, while drops support for old ones.
 
2.0.3.0 – 2023-02-24
- Add 
GTraversal.Genmodule (see https://github.com/debug-ito/greskell/issues/15 ) 
2.0.2.0 – 2023-01-11
- Add 
oDescandoAscfunctions (Gremlinmodule) ( https://github.com/debug-ito/greskell/pull/14 ) 
2.0.1.0 – 2022-11-24
- Confirm test with ghc-9.2.5, vector-0.13.0.0 and aeson-2.1.0.0.
 - Remove doctests. This is because it’s so difficult to maintain doctests with recent GHCs and cabals.
- doctests have been moved to 
examplesfunction defined in some modules. - @ners helped a lot in https://github.com/debug-ito/greskell/pull/12
 
 - doctests have been moved to 
 - Add the following functions ( https://github.com/debug-ito/greskell/pull/13 )
gElementMap(GTraversalmodule)toGremlinKeys(Graphmodule)
 - Use stylish-haskell to format codes.
 
2.0.0.0 – 2021-12-28
- BREAKING CHANGE: Now greskell uses 
aeson-2.0. As a result, now implementation ofData.Aeson.Objecthas been changed fromHashMaptoKeyMap. Some types in greskell (e.g.Binding) directly uses theObjecttype. - Confirm test with 
aeson-2.0.2.0,semigroups-0.20,hashable-1.4.0.1,doctest-0.19,doctest-0.20. - Add 
showWalkType,showLiftandshowSplitfunctions, but those are only for testing purposes. hint-test-suiteis removed. Instead,typecheck-test-suiteis added, which is more robust and lightweight.
1.2.0.2 – 2021-11-08
- Confirm test with 
base-4.15.0.0. 
1.2.0.1 – 2021-02-11
- Confirm test with 
doctest-0.18. 
1.2.0.0 – 2020-12-29
- Add 
Logicmodule. 
Gremlin module
- Add 
PLikeclass. - BREAKING CHANGE Generalize signatures of the following functions
using 
PLike. You may encounter compile errors if the compiler fails to infer the type.pEqpNeqpLtpLtepGtpGtepInsidepOutsidepBetweenpWithinpWithout
 
GTraversal module
- Add the following functions. (Fix for #10)
gWhereP1gWhereP1'gWhereP2gWhereP2'gMatchmPattern
 - Add the following types.
MatchPatternMatchResult
 
Gremlin module
- Add 
LabeledPtype. 
1.1.0.3 – 2020-06-21
- Confirm test with 
base-4.14.0.0. 
1.1.0.2 – 2020-06-06
- Support 
doctest-0.17. 
1.1.0.1 – 2020-05-30
- Support 
aeson-1.5.0.0. 
1.1.0.0 – 2020-04-26
GTraversal module
- BREAKING CHANGE 
gFlatMapis now polymorphic about the WalkTypes. UsegFlatMap'For monomorphic version. - Add the following functions.
gFlatMap'gCoalescegIterategPathgPathBy
 - Document change: Now 
gProjectis a “Transformation step”, andgUnfoldis an “Accessor step”. 
Graph module
- Add the following types.
PathPathEntry
 - Add the following functions.
pathToPMapmakePathEntry
 
Extra module
- Add 
gWhenEmptyInputfunction. 
AsLabel module
- Derive 
Hashableinstance forAsLabel. - Add 
unsafeCastAsLabelfunction. 
1.0.1.0 – 2020-04-24
GTraversal module
- Add the following functions.
gRepeatgTimesgUntilHeadgUntilTailgEmitHeadgEmitTailgEmitHeadTgEmitTailTgLoopsgIsgIs'gIsPgIsP'gCyclicPathgCyclicPath'gSimplePathgSimplePath'gUniongChoose3gConstantgLocalgBarriergDedupgDedupNgUnfold
 - Add the follwing types.
RepeatUntilRepeatEmitRepeatPosRepeatLabel
 
1.0.0.1 – 2019-12-30
- Confirm test with 
base-4.13.0.0 
1.0.0.0 – 2019-12-27
- Add some test cases to server-behavior-test
 - Add PMap and NonEmptyLike modules.
 
Data.Greskell module
- Export PMap module.
 
Graph module - Element class and ElementID
- BREAKING CHANGE Now 
ElementIDis a newtype forGValue. It was an associated type family inElementclass. However, I think there was no point to make it polymorphic. - BREAKING CHANGE Remove 
EdgeVertexIDtype family fromEdgeclass. - BREAKING CHANGE Add 
ElementDataclass, and set it as a super class ofElement. - BREAKING CHANGE Type of the ID field for 
AVertex,AEdgeandAVertexPropertyis nowElementID, notGValue. - Add 
unsafeCastElementIDfunction. - Add 
ElementPropertyContainertype family toElementclass. It’s necessary forgValueMaptraversal. 
Graph module - “reference” model for graph element types
Now the graph element types don’t contain properties. They only have their ID and label (and the value if it’s a VertexProperty). This is because some graph implementation of TinkerPop don’t return properties when it returns graph elements. See #6.
- BREAKING CHANGE Remove 
avPropertiesfield fromAVertex. - BREAKING CHANGE Remove 
aeInVLabel,aeOutVLabel,aeInV,aeOutVandaePropertiesfields fromAEdge. - BREAKING CHANGE Remove 
avpPropertiesfield fromAVertexProperty. - BREAKING CHANGE Move 
PropertyMapclass,FromGraphSONWithKeyclass,PropertyMapSingletype,PropertyMapListtypes and related functions toGraph.PropertyMapmodule. They are now all deprecated. UsePMapmodule instead. 
Graph module - Key for element property
- BREAKING CHANGE Internal of 
Keyis modified fromGreskell TexttoText, so that it can be an instance ofPMapKeyclass. - BREAKING CHANGE Add 
KeyNoValuedata constructor forKeyValuetype. - Add 
unsafeCastKeyfunction. - Add 
Keystype and related functions. 
GTraversal module
- BREAKING CHANGE Change the signature of the following functions
because now 
ElementIDis a newtype, not a type alias.sV'gV'sE'
 - Add 
gValueMap,gProjectandgByLfunctions. - Add 
LabeledByProjectiontype. - Add 
unsafeCastStartandunsafeCastEndfunctions toToGTraversalclass. 
Extra module
- BREAKING CHANGE Remove 
writeAllPropertiesbecausePropertyMapis deprecated. - Add 
writeKeyValuesfunction. - Add 
writePMapPropertiesfunction. - Add 
(<=:>)and(<=?>)operators. - Re-export property reader functions such as 
lookupAs. 
AsLabel module
- Now 
SelectedMapis a specialized type alias forPMap. - BREAKING CHANGE 
lookup,lookupM,lookupAsandlookupAsMare now re-exports fromPMapmodule, whose signature is more polymorphic than the original ones and have a different exception type. - BREAKING CHANGE 
AsLookupExceptionis removed. UsePMapLookupExceptioninstead. - Make 
AsLabelan instance ofPMapKey. - Add 
IsStringinstance toAsLabel. 
0.2.3.1 – 2019-10-02
- Confirm test with 
semigroups-0.19.1. 
0.2.3.0 – 2019-01-01
- Add Extra module.
 
0.2.2.0 – 2018-11-23
- Add new 
AsLabelmodule. 
GTraversal module
- Add 
gAs,gSelect1,gSelectN,gSelectBy1,gSelectByN,gOutV,gOutV',gInV,gInV'functions. 
Binder module
- Add 
newAsLabelfunction. 
0.2.1.1 – 2018-10-03
- Confirm test with 
base-4.12.0.0 
0.2.1.0 – 2018-08-17
GTraversal module
- Add 
(<$.>),(<*.>),gLimit,gTail,gSkip,gId,gLabelfunctions. 
0.2.0.3 – 2018-07-24
- Confirmed test with 
doctest-discover-0.2.0.0. 
0.2.0.2 – 2018-06-24
- Confirmed test with 
doctest-0.16.0. 
0.2.0.1 – 2018-06-24
- .cabal: Now 
hint-testflag hasmanual: Truesetting. The hint-test may be sometimes unstable, so the user should be able to disable it in a stable way. See https://github.com/commercialhaskell/stackage/pull/3758 
0.2.0.0 – 2018-06-21
- Confirmed test with 
aeson-1.4.0.0andhint-0.8.0. 
Graph module
- 
BREAKING CHANGE: Now
AVertex,AEdge,AVertexPropertyare based onGValuetype, instead ofGraphSON Value. This is for taking care of possibly nested GraphSON-encoded values in a generic way. - 
BREAKING CHANGE:
parseOneValue,parseListValues,parseNonEmptyValuesfunctions now requireFromGraphSONconstraint, instead ofFromJSON, because property types ofAVertexetc have changed. - 
Add
Cardinalitytype and its enum instances. - 
Add
KeyValuetype and(=:)operator. - 
(internal change):
PropertyMapGenericis now based onHashMap.Strict. 
The top Data.Greskell module
- Re-export 
GMapandAsIteratormodules. 
GTraversal module
- Add 
gV,gV',gAddE,gAddE',gFrom,gTo,gProperty,gPropertyV,sAddV,sAddV'. 
0.1.1.0 – 2018-04-08
- Add Semigroup instance to PropertyMapSingle and PropertyMapList.
 - Confirmed test with base-4.11 (with hint-test and server-test disabled)
 
0.1.0.0 – 2018-03-12
- First version. Released on an unsuspecting world.