> On Aug 8, 2017, at 3:24 PM, Daryle Walker via swift-evolution
> <email@example.com> wrote:
>> On Aug 8, 2017, at 12:35 AM, Félix Cloutier <felixclout...@icloud.com
>> <mailto:felixclout...@icloud.com>> wrote:
>> All this means is that `joined()` does not create an array that contains the
>> new result. It's only as magic as the COW semantics on arrays.
> So you’re saying the COW semantics for Array and other standard library types
> have secret references/pointers that work even for “let”-mode objects, and
> the Sequence variants the various forms of “joined” need use a
> Sequence/Collection of those secret references?
Why would .joined() need some sort of special reference instead of just storing
the collection values as normal values?
>>> Le 7 août 2017 à 21:12, Daryle Walker via swift-evolution
>>> <firstname.lastname@example.org <mailto:email@example.com>> a écrit :
>>> I was looking at random items at SwiftDoc.org <http://swiftdoc.org/>, and
>>> noticed the “FlattenBidirectionalCollection” structure. It helps implement
>>> some versions of “joined” from Sequence (probably when the Sequence is also
>>> a BidirectionalCollection). The directions for the type state that “joined”
>>> does not create new storage. Then wouldn’t it have to refer to the source
>>> objects by reference? How; especially how does it work without requiring a
>>> “&” with “inout” or how it works with “let”-mode objects? Or am I
>>> misunderstanding how it works behind the covers?
>>> (If there is a secret sauce to have one object refer to another without
>>> “&”/“inout”/“UnsafeWhateverPointer”, I like to know. It may help with
>>> implementing an idea. The idea involves extending the language, so
>>> “compiler magic” that the user can’t access is OK; I’d just claim to use
>>> the same sauce in my proposal.)
> Daryle Walker
> Mac, Internet, and Video Game Junkie
> darylew AT mac DOT com
> swift-evolution mailing list
swift-evolution mailing list