Github user jorgebay commented on the issue:
https://github.com/apache/tinkerpop/pull/792
The implementation looks great and the final `GraphTraversal` and
`GraphTraversalSource` APIs make a lot of sense, like:
```csharp
public GraphTraversal<S, E2> Branch<E2> (IFunction function) {}
```
This enables us that if we wanted to in the future, we could implement a
lambda in C# that takes a `Func<T, TResult>`, like:
```csharp
IFunction fn = Lambda.GetFunction<string, int>(text => text.length)
int traversal.Branch(fn).Next();
```
Just 1 suggestion:
Can we make `Lambda` class `static` and make the `Lambda.Groovy()` and
`Lambda.Python()` return an `ILambda` interface?
```csharp
public interface ILambda : IFunction, IBiFunction, IPredicate,
IUnaryOperator, IBinaryOperator, IComparator,
IConsumer, ISupplier
```
```csharp
// Make the implementation internal
internal class StringBasedLambda: ILambda
{
public string LambdaExpression { get; }
public string Language { get; }
public object Arguments { get; }
public Lambda(string expression, string language)
{
// ...
}
}
```
Then, the serializers could take an `ILambda`: `{typeof(ILambda), new
LambdaSerializer()}`
---