on Sat Jul 02 2016, Anton Zhilin <[email protected]> wrote: > Matthew Johnson via swift-evolution <swift-evolution@...> writes: > >> >>> protocol From<T> { >> >>> init(_ from: T) >> >>> } >> >> >> > With From definition given above, I would define > IntLiteralConvertible === >> > From<Int>, BoolLiteralConvertible === From<Bool>, etc. That means, > if you >> > conform to From<T> where T is one of Int, Bool, ... then the type > becomes >> > "literal convertible". >> >> But that doesn't capture the semantics of these protocols. See the > observations made by the library team >> quoted in the motivation section as well as Dave Abrahams' comments > quoted in the alternatives section. >> None of this changes if we get generic protocols. >> >> Protocols aren't just about the syntax, they are also about semantics. > These protocols encode specific >> and important semantics. > > But as some of them noted in the discussion, low-level protocols that > interact with language syntax can focus on syntax entirely. I've not > seen this point supported by other team members, though. > > Personally, I don't see any semantics in LiteralConvertible protocols. > If a type can be initialized with another type, then we can call it a > conversion. And I can't imagine any case where e.g. Bool that came from > a literal should be treated differently from any other Bool.
Because there's no source type. When you write a literal, you're not converting *from* anything. -- -Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
