[swift-evolution] Reconsidering the (Element -> T?) variant of SequenceType.flatMap

Maxwell Swadling maxs at apple.com
Fri Dec 4 18:13:21 CST 2015


> On 4 Dec 2015, at 4:01 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
> 
> On Fri, Dec 4, 2015 at 4:00 PM, Maxwell Swadling <maxs at apple.com> wrote:
>> 
>>> On 4 Dec 2015, at 3:37 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
>>> 
>>> On Fri, Dec 4, 2015 at 3:34 PM, Kevin Ballard <kevin at sb.org> wrote:
>>>> Personally, I'd be in favor of making Optional conform to SequenceType. I've filed a radar on it before, and I seem to recall a message (probably to this list) yesterday suggesting the exact same thing.
>>> 
>>> This would be an interesting direction, but we have discussed it a
>>> long time ago, and found an issue in the way it would interact with
>>> implicit promotions to optionals.  Basically, in a call to a function
>>> accepting a Sequence, one would be able to write any non-sequence,
>>> non-optional value, that would be implicitly promoted to optional, and
>>> thus eligible to be passed as a Sequence.  This is the only argument
>>> for not adding this conformance that I know of, but it is a show
>>> stopper unfortunately.
>>> 
>>> Dmitri
>>> 
>>> --
>>> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
>>> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> I can not reproduce this behaviour. I'm not sure which version of the compiler had this behaviour.
> 
> The fact that the compiler does not do it means it is not implementing
> the language model.  The compiler is not the source of truth about the
> language, or we wouldn't have any bugs -- they all would be features.
> 
> Dmitri
> 
> -- 
> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/

I think you were observing a bug at the time and it is safe to say it isn't part of the language. Otherwise programs like this would be accepted:

func f<a: CustomDebugStringConvertible>(x: a) {
    print(x.debugDescription)
}
f(1)

or

1.debugDescription

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151204/44b256b6/attachment.html>


More information about the swift-evolution mailing list