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.
>>> ---
>>
>>