on Thu Jun 09 2016, Haravikk <swift-evolution-AT-haravikk.me> wrote:

>> On 8 Jun 2016, at 20:53, Dave Abrahams via swift-evolution
> <[email protected]> wrote:
>> 
>>> on Wed Jun 08 2016, Haravikk <[email protected]
> <mailto:[email protected]>> wrote:
>>> 
>>> But those shouldn't be the public names.  Perhaps s/box/wrap/ ?
>
> True! So I’m thinking I’ll try to come up with a basic proposal soon,
> I’m just thinking about how this would be implemented. For example, it
> may make sense to do this as a protocol that AnyIndex (and other
> suitable types) can just conform to like so:
>
>       protocol Unwrappable {
>               associatedtype UnwrappedType
>               func unwrap<T:UnwrappedType>() -> T?
>               func unsafeUnwrap<T:UnwrappedType>() -> T
>       }
>
> I’ve kept the ability to specify a root type that unwrapping can
> produce, i.e- Comparable in the case of AnyIndex. Not too happy with
> the name of UnwrappedType, since it’s not intended to be the exact
> type in most cases, 

Examples please?

> not sure what would be a more appropriate name. 

We have traditionally used the names “Base” and “base” to describe the
name of a type that is being adapted by a wrapper and the property that
accesses the adapted instance.

> Also I lost track of the discussion about common root types between
> value and reference types; is there a type in Swift that could be used
> when unwrapping can produce absolutely anything (struct, enum, object
> etc.)? 

It's called “Any.”

> If not it may be better to drop the associated type and just lose the
> extra type-checking benefit.
>
> I’m still struggling to come up with other types that definitely need
> this, as all the other AnyFoo types I can think of expose
> functionality of the underlying type that you can use, so the need to
> unwrap them doesn’t really come up. But with a protocol defining this
> the capability will be there to expand this quickly to other types
> later.

-- 
Dave
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to