> On 4 Dec 2017, at 10:42, Vincent Esche via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I think the argument basically is "let's not add another footgun" (because 
> the design of Swift , for example regarding null handling, is to have less 
> footguns than other languages). The fact that there are footguns in swift 
> isn't an argument for adding new ones.
> 
> Couldn’t have said it better. This is what it all boils down to.

I would definitely not go as far as calling this proposal a language footgun.

> On Mon, Dec 4, 2017 at 12:16 AM, Benjamin G via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
> 
> On Sun, Dec 3, 2017 at 8:26 PM, Chris Lattner via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> On Dec 3, 2017, at 11:03 AM, Magnus Ahltorp <m...@kth.se 
> <mailto:m...@kth.se>> wrote:
> >
> >> 4 Dec. 2017 02:40 Chris Lattner via swift-evolution 
> >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> >>
> >> That’s a good principle.  However, a dynamic member lookup is just a 
> >> member lookup.  By that principle, it should look like a member lookup :-)
> >>
> >> Further, I incorporated some of the conversation with Matthew into the 
> >> proposal, showing how adding even a single sigil to dynamic member lookup 
> >> to distinguish it is problematic:
> >> https://gist.github.com/lattner/b016e1cf86c43732c8d82f90e5ae5438#increasing-visibility-of-dynamic-member-lookups
> >>  
> >> <https://gist.github.com/lattner/b016e1cf86c43732c8d82f90e5ae5438#increasing-visibility-of-dynamic-member-lookups>
> >>
> >> Further, adding something like .dynamic would completely undermind the 
> >> proposal.  You can already write:
> >>
> >>      x.get(“foo”).get(“bar”)
> >>
> >> having to write:
> >>
> >>      x.dynamic.foo.dynamic.bar
> >>
> >> has no point.
> >
> > This example shows what many on this list don't believe: that any Swift 
> > method or member access can fail. If the return value of this "get" method 
> > is an IUO, or not an Optional at all, and doesn't throw, then the 
> > expression would have to fail hard if "foo" didn't resolve to something 
> > meaningful.
> >
> > The most common argument against this proposal is that someone could make 
> > an API using Dynamic Member Lookup that could fail even though it is not 
> > apparent to the caller. But, as we see in the example, this is just as 
> > possible today.
> 
> Correct.  The argument also fails to recognize that (when bridging to a 
> dynamic language):
> 
>         x+y
> 
> Is a completely dynamic method call which can fail (or return IUO), as is:
> 
>         x[i]
> 
> And that this is true with no changes to Swift.  The claim that such a thing 
> is counter to the design of Swift is completely perplexing to me.
> 
> I think the argument basically is "let's not add another footgun" (because 
> the design of Swift , for example regarding null handling, is to have less 
> footguns than other languages). The fact that there are footguns in swift 
> isn't an argument for adding new ones.
> 
>  
> 
> -Chris
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to