tinkerpop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Frantz (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TINKERPOP3-761) Some basic mathematical functions / steps
Date Mon, 03 Aug 2015 15:07:05 GMT

    [ https://issues.apache.org/jira/browse/TINKERPOP3-761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14651960#comment-14651960

Matt Frantz commented on TINKERPOP3-761:

Instead of a family of steps, we could have a single {{reduce}} step with an enumerated set
of operations, {{R}}, much as {{P}} provides an enumerated set of predicates.  It could have
{{Scoping}} implementations, so that it could apply as a reducing barrier step (global) or
as a map operation on a {{List}} (local).

inject(1, 1).reduce(R.add).as('two')

(Incidentally, this allows the {{fold}} step to be expressed as {{reduce(R.list)}}.)

You could optionally seed the reduce:
g.V().values('age').reduce(10, R.add).as('agePlusTen')

You could also have a single {{bind}} step (in the family of {{map}}) that would apply the
binary {{R}} operator with a constant bound to either operand:
g.V().values('age').bind(2, R.divide).as('twoDividedByAge')
g.V().values('age').bind(R.divide, 2).as('ageDividedByTwo')

We could interpret string arguments to {{bind}} or {{reduce}} to be labels/keys that can be
{{select}}ed, and {{by}}ed:
  .bind('a', R.add, 'b').by('age').as('averageAge')

> Some basic mathematical functions / steps
> -----------------------------------------
>                 Key: TINKERPOP3-761
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-761
>             Project: TinkerPop 3
>          Issue Type: Improvement
>          Components: process
>    Affects Versions: 3.0.0-incubating
>            Reporter: Daniel Kuppitz
>            Assignee: Marko A. Rodriguez
> Every once in a while I wish to have steps for some basic mathematical operations ({{add()}},
{{sub()}}, {{mul()}}, {{div()}}). Since {{sub(num)}} is the same as {{add(-num)}} and {{div(num)}}
is the same as {{mul(1/num)}}, we would only need two new step implementations.
> Oh, and then there's also {{mod()}}, thus 3 new step implementations.

This message was sent by Atlassian JIRA

View raw message