<commit_before># Graf[T]
While a [**Graf**](https://en.wikipedia.org/wiki/Graf) is the historical title of German nobility, 
**Graf**[T] is an attempt to `lift` TinkerPop3 into the noble ranks of `higher-kinded types` in Scala.

**Graf**[T] uses [Scalaz] (https://github.com/scalaz/scalaz) to create an [FP](https://en.wikipedia.org/wiki/Functional_programming) solution to 
interfacing with TinkerPop3 in Scala. [TinkerPop3] (http://tinkerpop.incubator.apache.org/) provides graph computing 
capabilities for both graph databases (OLTP) and graph analytic systems (OLAP).  [Gremlin Scala](https://github.com/mpollmeier/gremlin-scala) wraps the TinkerPop3 API and introduces more type-safe 
functions. 

Technically, **Graf**[T] is an instance of Free Monad, uses a Natural Transformation for Reader semantics and Task 
memoization to create a referentially transparent API that given the same input produces the same output despite global state change that may have occurred in the graph.  This of course has benefits and drawback but referentially 
transparent functions are far easier to reason about. 

[![Build Status](https://secure.travis-ci.org/dkrieg/graf.png?branch=master)](http://travis-ci.org/dkrieg/graf)

### Example Code
* [GrafApp.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp.scala), 
[GrafApp2.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp2.scala),
[GrafApp3.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp3.scala) For closer examination
```scala
object GrafApp extends App {

  // create a script to modify and traverse a graph
  val script = Graf {
    for {
      // access the Graph
      g ← G

      // create some vertices
      marko = g + Map(Name("marko"), Person, Age(29))
      vadas = g + Map(Person, Name("vadas"), Age(27))
      lop = g + Map(Name("lop"), Lang("java"), Software)
      josh = g + Map(Person, Name("josh"), Age(32))<commit_msg>Travis build<commit_after># Graf[T]
While a [**Graf**](https://en.wikipedia.org/wiki/Graf) is the historical title of German nobility, 
**Graf**[T] is an attempt to `lift` TinkerPop3 into the noble ranks of `higher-kinded types` in Scala.

**Graf**[T] uses [Scalaz] (https://github.com/scalaz/scalaz) to create an [FP](https://en.wikipedia.org/wiki/Functional_programming) solution to 
interfacing with TinkerPop3 in Scala. [TinkerPop3] (http://tinkerpop.incubator.apache.org/) provides graph computing 
capabilities for both graph databases (OLTP) and graph analytic systems (OLAP).  [Gremlin Scala](https://github.com/mpollmeier/gremlin-scala) wraps the TinkerPop3 API and introduces more type-safe 
functions. 

Technically, **Graf**[T] is an instance of Free Monad, uses a Natural Transformation for Reader semantics and Task 
memoization to create a referentially transparent API that given the same input produces the same output despite global state change that may have occurred in the graph.  This of course has benefits and drawback but referentially 
transparent functions are far easier to reason about. 

[![Build Status](https://api.travis-ci.org/dkrieg/Graf.png?branch=master)](http://travis-ci.org/dkrieg/Graf)

### Example Code
* [GrafApp.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp.scala), 
[GrafApp2.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp2.scala),
[GrafApp3.scala](https://github.com/dkrieg/Graf/blob/master/src/example/scala/com/graf/GrafApp3.scala) For closer examination
```scala
object GrafApp extends App {

  // create a script to modify and traverse a graph
  val script = Graf {
    for {
      // access the Graph
      g ← G

      // create some vertices
      marko = g + Map(Name("marko"), Person, Age(29))
      vadas = g + Map(Person, Name("vadas"), Age(27))
      lop = g + Map(Name("lop"), Lang("java"), Software)
      josh = g + Map(Person, Name("josh"), Age(32))
{'fraction_non_alphanumeric': 0.12964824120603016, 'fraction_numerical': 0.007035175879396985, 'mean_word_length': 4.322192513368984, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 16, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1607694', 'n_tokens_mistral': 1339, 'n_tokens_neox': 1267, 'n_words': 376}