[ 
https://issues.apache.org/jira/browse/TINKERPOP-1854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16362211#comment-16362211
 ] 

ASF GitHub Bot commented on TINKERPOP-1854:
-------------------------------------------

Github user jorgebay commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/792#discussion_r167847541
  
    --- Diff: gremlin-dotnet/glv/generate.groovy ---
    @@ -48,7 +48,7 @@ def toCSharpTypeMap = ["Long": "long",
                            "TraversalMetrics": "E2",
                            "Traversal": "ITraversal",
                            "Traversal[]": "ITraversal[]",
    -                       "Predicate": "TraversalPredicate",
    +                       "Predicate": "object",
    --- End diff --
    
    Sorry, I've read it a while back when the pull request was first opened and 
forgot about it :/
    
    There are several consequences of using an untyped API for those methods:
    - We are stuck maintaining an API for which we can't predict how its being 
used (specially considering that db providers might support additional 
functionality on top of the GLV).
    - The user looses compile time checks.
    - It will be hard for the user to find the correct expected type (`Lambda`) 
and the error message on serialization might be unclear.
    
    I think we should avoid using `object` for predicates.
    
    We could use different workarounds for the `T` issue you highlighted above:
    - Use a class for `T` (not an enum), properties like `T.Id` could return 
instances of whatever interface we create for it. Given that java enums 
functionality is more comprehensive than what C# currently supports, it makes 
sense to use a class IMO.
    - Generate the offending traversal methods manually.


> Support lambdas in Gremlin.Net
> ------------------------------
>
>                 Key: TINKERPOP-1854
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1854
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: dotnet
>    Affects Versions: 3.3.0, 3.2.6
>            Reporter: Florian Hockmann
>            Assignee: Florian Hockmann
>            Priority: Major
>
> Gremlin.Net should support lambdas. We already discussed this in [the pull 
> request for TINKERPOP-1752|https://github.com/apache/tinkerpop/pull/712]. 
> Here is what [~spmallette] said over there:
> {quote}
> Any reason we don't support lambdas? Even if .NET can't support them natively 
> for some reason wouldn't we minimally support the ability to pass a 
> python/groovy/etc lambda? it's kinda weird that way, but i think back to the 
> point that kuppitz made on the dev list the other day where he stated that he 
> doesn't always find a way out of using lambdas in production systems he works 
> on - so ultimately users will need that kind of capability i think.
> {quote}
> C# lambdas would require some kind of C# parser on the server side, so at 
> least in the beginning a way to send lambdas from already supported languages 
> in Gremlin.Net should be enough.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to