I was trying to reconcile the way that the range/limit/tail steps operate
with how Pop is interpreted.  For local scope, the range ordinals are
congruent with the list index ordinals.  Thus, "limit(1)" means
"range(0,1)" which means List.get(0).  Since "tail(1)" is the complement of
"limit(1)", it means "the highest numbered element" or
List.get(List.size()-1).

I understand your description of a stream, but I was trying to reconcile
the terms with Gremlin and not with streams.

If you compare a stream with a Unix command line, and how the "head" and
"tail" utilities act, then "head" means "the first lines you see" and
"tail" means "the last lines you see".

For global scope, it seems that "limit(1)" means "the first traverser" and
"tail(1)" means "the last traverser".  For any Traversal, t, t.limit(1)
produces the same thing as t.toList().get(0).

Good news on select(pop)!

On Thu, Jun 11, 2015 at 11:43 AM, Marko Rodriguez <[email protected]>
wrote:

> Hey,
>
> Yes -- "first = tail" and "last = head".
>
> A path grows with its "head growing" .. its tail is static.
>
> a-->b-->c-->d-->e
>
> the tail is always "a"…the head is "a", then "b", then "c", then "d"….
>
> In a list or stream, the tail is the first element.
>         - get(0) for list
>         - stream().toList().get(0)
> In a list or stream, the head is always the most current element.
>         - get(list.size() - 1) for list
>         - stream().next()
>
> …..?
>
> I will hide your interface inside ImmutablePath just for my sanity :).
>
> BTW: select(pop) is on its way.
>
> Marko.
>
> http://markorodriguez.com
>
> On Jun 11, 2015, at 12:30 PM, Matt Frantz <[email protected]>
> wrote:
>
> > limit(1) means "first" and tail(1) means "last" (in both global and local
> > manifestations).
> >
> > In the Path.get results, you get a list whose first element is the
> > first/oldest object matching the step label, so that felt like "head" to
> > me, while the last element is the most recent and thus "tail".
> >
> > get => [a,b,c,d]
> > getSingle(head) => a
> > getSingle(tail) => d
> >
> > In other words the following should be equal:
> >
> > ...map{it->it.path().get('foo')}.tail(local, 1)
> > ...map{it->it.path().getSingle(tail, 'foo')}
> >
> > I used ImmutablePathImpl because I needed HeadPath to have the
> > getSingleTail/getSingleHead methods, too.  Thus, a common interface
> between
> > ImmutablePath and HeadPath was required.  The interface has package
> scope,
> > so it is not part of the public API.
> >
> > On Thu, Jun 11, 2015 at 11:12 AM, Marko Rodriguez <[email protected]>
> > wrote:
> >
> >> Hi Matt,
> >>
> >> limit(1) means the most recent value.
> >> tail(1) means the oldest value. ?
> >>
> >> path: [a,b,c,d]
> >>  a = tail
> >>  d = head
> >>
> >> No?
> >>
> >> Also, why did you do ImmutablePathImpl? Seems that can just be private
> >> methods inside of ImmutablePath?
> >>
> >> Thanks,
> >> Marko.
> >>
> >> http://markorodriguez.com
> >>
> >> On Jun 11, 2015, at 11:56 AM, mhfrantz <[email protected]> wrote:
> >>
> >>> GitHub user mhfrantz opened a pull request:
> >>>
> >>>   https://github.com/apache/incubator-tinkerpop/pull/76
> >>>
> >>>   TINKERPOP3-700 Path getSingle/getList improvements
> >>>
> >>>   As requested in the comments of TINKERPOP3-700.  I also reversed the
> >> sense of `Pop` to align with `tail(local)`.  Thus `Pop.tail` now means
> the
> >> most recent value.
> >>>
> >>> You can merge this pull request into a Git repository by running:
> >>>
> >>>   $ git pull https://github.com/RedSeal-co/incubator-tinkerpop
> >> TINKERPOP3-700-Path-getSingle
> >>>
> >>> Alternatively you can review and apply these changes as the patch at:
> >>>
> >>>   https://github.com/apache/incubator-tinkerpop/pull/76.patch
> >>>
> >>> To close this pull request, make a commit to your master/trunk branch
> >>> with (at least) the following in the commit message:
> >>>
> >>>   This closes #76
> >>>
> >>> ----
> >>> commit e1e1a40b068ffe6da3d321256d6200dee0504074
> >>> Author: mhfrantz <[email protected]>
> >>> Date:   2015-06-11T16:47:41Z
> >>>
> >>>   Add javadoc for Path getList/getSingle
> >>>
> >>> commit 4939cf0a22c4fc44a4f86ed3e023fa30e4e872cc
> >>> Author: mhfrantz <[email protected]>
> >>> Date:   2015-06-11T17:10:27Z
> >>>
> >>>   Reverse sense of Path.getSingle Pop to align with tail(local) step
> >>>
> >>> commit 027d6319f9ff06ca26d785e83bf17b21364c3dca
> >>> Author: mhfrantz <[email protected]>
> >>> Date:   2015-06-11T17:51:23Z
> >>>
> >>>   Optimize MutablePath.getSingle
> >>>
> >>> commit 5e9ad8d7dff6c63b9746147a1d255cbf7258cea3
> >>> Author: mhfrantz <[email protected]>
> >>> Date:   2015-06-11T17:52:43Z
> >>>
> >>>   Optimize ImmutablePath getSingle and getList
> >>>
> >>> ----
> >>>
> >>>
> >>> ---
> >>> If your project is set up for it, you can reply to this email and have
> >> your
> >>> reply appear on GitHub as well. If your project does not have this
> >> feature
> >>> enabled and wishes so, or if the feature is enabled but not working,
> >> please
> >>> contact infrastructure at [email protected] or file a JIRA
> >> ticket
> >>> with INFRA.
> >>> ---
> >>
> >>
>
>

Reply via email to