[swift-evolution] Tuple accessor shorthand
Matthew Johnson
matthew at anandabits.com
Fri Dec 18 10:10:16 CST 2015
Sorry, I didn’t read your post carefully enough. You are correct, this is not possible.
If you need to dig 3 levels deep into a tuple you may have cases where structs would be more appropriate.
> On Dec 18, 2015, at 10:01 AM, Alexandre Lopoukhine <superlopuh at gmail.com> wrote:
>
> Matthew,
>
> What I’m thinking about would be a true equivalent of the closure syntax, where the following:
>
> {$0.0.1.2} becomes
>
> Tuple.0.1.2
>
> I’m not aware of this being achievable at the language level today.
>
> — Sasha
>
>
>> On 18 Dec 2015, at 16:34, Matthew Johnson <matthew at anandabits.com> wrote:
>>
>> This is already possible today. You just need to write overloads for tuples of up to n members. Are you asking for this to be a library feature?
>>
>>
>>> On Dec 18, 2015, at 9:30 AM, Alexandre Lopoukhine via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>> Hello everyone,
>>>
>>> To tie into the discussion of shorthands for “map", here’s something that I think is worth considering:
>>>
>>> Skipping the motivation (mostly, I’m on a mission to eliminate the $ character in my functional code), here’s a function definition:
>>>
>>> func first<A,B>(tuple: (A,B)) -> A {
>>> return tuple.0
>>> }
>>>
>>> Having functions like this transforms
>>>
>>> pairArray.map({$0.0})
>>>
>>> into
>>>
>>> pairArray.map(first)
>>>
>>> This is not ideal, as it pollutes the global space, and there would need to be tons of those for various tuple sizes.
>>>
>>> Here’s an alternative:
>>>
>>> pairArray.map(().0)
>>>
>>> I think that this makes the intent pretty clear, as well as non-conflicting with anything in the language.
>>>
>>> What do you all think?
>>>
>>> — Sasha
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>
More information about the swift-evolution
mailing list