> On Jul 14, 2016, at 6:33 PM, Anton Zhilin <[email protected]> wrote:
> 
> And such a feature would look odd on a struct.

But why would it be a struct? Types are obvious candidates to have identities; 
the type is the same "thing" everywhere it's referred to. Types don't have 
value semantics; if you perform a mutating operation on a type, that mutation 
is visible everywhere. Types (at least class types) have subtype relationships; 
structs can't express those.

I like the `Type<>` syntax, especially if it's something that could at least 
partially be written in the standard library (how nice would it be if we had 
`final class Type<Describing>` in the generated headers?), and I really like 
the idea of extending a metatype to conform to a protocol. But a lot of what's 
being discussed here, I just don't get. What's the benefit of switching to 
structs? Of removing type members?

> I don't see any problems with Type<Type<T>>. There is finite number of types 
> that are used in the program, and compiler can collect and store information 
> about them all statically. Am I right?

Maybe not:

        func recursivelyPrint<T>(type: T.Type, depth: Int) {
                print(type)
                guard depth > 0 else { return }
                recursivelyPrint(type: type.dynamicType, depth: depth - 1)
        }
        recursivelyPrint(type: Int.self, depth: 5)

-- 
Brent Royal-Gordon
Architechies

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

Reply via email to