Re: PEP 505 (None-aware operators) for Python 3.11

Petr Viktorin <[email protected]> Tue, 20 Sep 2022 11:07:40 +0200
Newsgroups gmane.comp.python.devel
Message-ID <[email protected]>
On 20. 09. 22 10:59, Petr Viktorin wrote:
> On 19. 09. 22 17:58, Guido van Rossum wrote:
>> Personally I think returning None is a fine API design, and IMO the 
>> concerns about this pattern are overblown. Note that X|None is no 
>> different than the "Maybe X" pattern that functional programmers are 
>> so fond of.
> 
> I must disagree here. With `X|None` there is no way to do 
> `Maybe[Maybe[X]]`, and FP is all about proper composition.
> 
> One practical consequence is that "Maybe X" doesn't have the problem 
> that PEP 661 (Sentinel Values) tries to solve.

Sorry, hit Send too soon: I'm not arguing against returning None being 
good design. Just the note that compares it to FP's Maybe.


>> On Mon, Sep 19, 2022 at 8:02 AM Philipp Burch <[email protected] 
>> <mailto:[email protected]>> wrote:
>>
>>     Hi all,
>>
>>     I've only here found out that there is a discussion going on about
>>     those
>>     none-aware operators and my first thought was "great, finally!". 
>> FWIW,
>>     I'd be happy with the syntax suggestion in the PEP, since '?' looks
>>     rather intuitive to me to mean something like "maybe".
>>
>>     However, I then read the mentioned post of Steve Dower, with the 
>> final
>>     summary:
>>
>>       > So to summarise my core concern - allowing an API designer to 
>> "just
>>     use None" is a cop out, and it lets people write lazy/bad APIs rather
>>     than coming up with good ones.
>>
>>     This is a very good point. In fact, I've never really thought 
>> about it
>>     that way and of course he's totally right that "SomeType | None" (or
>>     Optional[SomeType], which also somehow made me feel that this 
>> usage is
>>     fairly intended) is not optimal, at least for user defined
>>     types/classes. The problem is, that I never actually thought about 
>> his
>>     suggested way. And I wouldn't be surprised if this holds for many 
>> other
>>     people as well.
>>
>>     Maybe it would be great to boldly mention these thoughts in the
>>     documentation at an appropriate place. In my opinion, there are at
>>     least
>>     the following good places where this would fit nicely:
>>
>>     - The documentation of the dataclasses
>>     (https://docs.python.org/3/library/dataclasses.html
>>     <https://docs.python.org/3/library/dataclasses.html>), since this is
>>     probably the most common use case for the "| None" pattern. Going
>>     further, the dataclasses functionality might even be extended to
>>     make it
>>     simpler to generate such null-types (or however they are called), so
>>     that it is no longer "a tonne more work".
>>
>>     - Linters like pylint could emit a note when seeing the "| None"
>>     pattern, linking to the explanation about why it is possibly not the
>>     best way to do it.
>>
>>     - The documentation of the discussed None-aware operators. Since 
>> these
>>     new operators are closely coupled to the arguably suboptimal "| None"
>>     pattern, it is probably good to tell folks right there why they 
>> should
>>     consider better alternatives.
>>
>>     As mentioned, I absolutely see Steve's point. However, there are many
>>     Python scripts/programs working without a complex API, where this "|
>>     None" pattern may still have its legitimate uses and the none-aware
>>     operators can make code easier to read (and write).
>>
>>     Best regards,
>>     Philipp
>>     _______________________________________________
>>     Python-Dev mailing list -- [email protected]
>>     <mailto:[email protected]>
>>     To unsubscribe send an email to [email protected]
>>     <mailto:[email protected]>
>>     https://mail.python.org/mailman3/lists/python-dev.python.org/
>>     <https://mail.python.org/mailman3/lists/python-dev.python.org/>
>>     Message archived at
>>     
>> https://mail.python.org/archives/list/[email protected]/message/Q2MOF5CJ7LSSZMEMB43YVEXD6PFATYTA/ <https://mail.python.org/archives/list/[email protected]/message/Q2MOF5CJ7LSSZMEMB43YVEXD6PFATYTA/>
>>     Code of Conduct: http://python.org/psf/codeofconduct/
>>     <http://python.org/psf/codeofconduct/>
>>
>>
>>
>> -- 
>> --Guido van Rossum (python.org/~guido <http://python.org/~guido>)
>> /Pronouns: he/him //(why is my pronoun here?)/ 
>> <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
>>
>> _______________________________________________
>> Python-Dev mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>> https://mail.python.org/mailman3/lists/python-dev.python.org/
>> Message archived at 
>> https://mail.python.org/archives/list/[email protected]/message/7HEZXSLT2A63RDLXTJAOQWGBHNU3WDCR/
>> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/[email protected]/message/2SLIUFU5YZJVBSVKYNKWE5ATESAZWYD6/
Code of Conduct: http://python.org/psf/codeofconduct/