Hi folks, moderator here. I’m calling it for this discussion. No further 
discussion is called for, IMO, although I’m sure Brett and I would be happy to 
be overridden by private request.

Stephen, thank for providing an excellent summary post on which to lay this 
thread to rest :) :)

best,
--titus

> On Feb 15, 2020, at 7:57 AM, Stephen J. Turnbull 
> <turnbull.stephen...@u.tsukuba.ac.jp> wrote:
> 
> All: If you're not interested in the back and forth, read my parallel
> post with a different subject.
> 
> Soni L. writes:
> 
>> I'm just gonna say learn rust since you actively refuse to accept
>> my explanation of rust traits. don't reply again until you've
>> learned rust.
> 
> OK, done.
> 
>> you don't want me to be rude
> 
> I don't actually care (cf. http://www.jwz.org/gruntle/rbarip.html),
> except that we've all agreed to the Code of Conduct, and I hate to see
> folks ignored, or worse, banned, for non-conformance.
> 
>> but when I literally explain rust traits
> 
> So far, from what you've written, they seemed to be what in Python I
> would call "zope.interface interfaces."  And in fact, both you and the
> 3 Rust-specific sources cited below emphasize this aspect of traits.
> Sadly, you did a very poor job of explaining what Rust traits are, and
> their advantages over strait.  Possibly because there aren't any
> advantages that aren't strait implementation details.  At least, I
> can't find any.
> 
>> you throw me an "that's not traits"
> 
> No, I'm throwing you an "I don't understand what you want."  I was not
> going to say "they're not traits" until I understood them.  I told you
> what I understood them to be *from your descriptions*, which turned out
> to be incomplete in rather important ways.
> 
> Now that I understand them better, they do seem to be traits à la
> Schärli et al., except that arbitrarily nested traits are allowed in
> Rust, and Rust allows unimplemented methods.  (This is not a
> restriction in Schärli et al's version of traits: the implementation
> of a trait method can simply call a method provided by the class
> incorporating the trait.)
> 
> In the TOSWidget example, as I understand it, in Rust:
> 
> 1.  In the trivial case where exactly one of TOSWidget, Pack, and
>    Place implements 'config', you get that implementation, and
>    any code that's not happy with that is incorrect.
> 2.  In the case TOSWidget implements 'config', and Pack or Place or
>    both implements it, you get TOSWidget's implementation, but
>    anything expecting Pack or Place behavior will not get it, and is
>    incorrect.
> 3.  If both Pack and Place implement 'config', but TOSWidget does not,
>    you get a compile-time error.
> 
> I still don't understand your comment implying that the fact that
> 
>    something that expects Place behavior will get Pack behavior from
>    TOSWidget
> 
> means strait is inferior to Rust's version.  I don't see how Rust can
> do better that that -- any code that expects Place behavior from the 6
> methods defined in TOSWidget is just plain incorrect code in Rust as
> well as in strait.  I guess you're implicitly appealing to Rust's UFCS
> (universal function call syntax)?  That's kind of unfair: it should be
> easy to implement a UFCS for strait traits, although it might need a
> clumsy syntax.  As pointed out in Rust documentation and bug reports,
> UFCS is only rarely needed, so clumsy syntax is not such a problem.
> 
>> "and fuck you for ..."
> 
> Not at all.  I was mostly inviting you to correct my understanding by
> explaining the details of Rust's implementation and pointing out where
> it differs.  I gather you aren't interested in trying, but I'm always
> happy to help.
> 
>> "... trying to get me to think."
> 
> I put 2 hours into composing that post, and another 2 into this one.
> If that's your definition of "refusing to think," you're wrong.
> 
> Good luck, anyway.
> 
> Regards,
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-ideas@python.org/message/CPFW6C6MJTAVQNFUANYITVJM57LCDPNS/
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/GW7OSZPQMQABJ5BPLMFCKQ5CEJDGZXXC/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to