On Sun, Feb 19, 2017, at 06:40 PM, Xiaodi Wu via swift-evolution wrote: > On Sun, Feb 19, 2017 at 5:15 PM, Brent Royal-Gordon via swift- > evolution <swift-evolution@swift.org> wrote: >> What is the harm of permitting an outside conformance to >> `SQLiteValue`?
I'll put words in Brent's mouth here as an attempt at an answer: you sometimes need to exclusively switch a downcast of an existential. Consider a serialization type - or SQLiteValue - where need to treat specific fundamental types ("primitives") in implementation-dependent ways. In a theoretical serialization design, all non-primitives would have an explicit protocol of semantics to conform to support serialization, much like the stdlib's "Custom" protocol pattern, and you compose from there. Using an enum to represent this exclusivity remains unconvincing to me, unless we choose to add implicit conversions to the language. `.int(42)` is an overwhelming level of duplicate type information in any practical, non-trivial use case. Yes, (closed) enums model exclusivity. They are not the only things to do so. The stdlib alone is reason enough for this feature to exist, even if not exposed publicly. Zachary
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution