Hello,

On Thu, 14 Jan 2021 22:05:37 +1100
Steven D'Aprano <st...@pearwood.info> wrote:

> On Wed, Jan 13, 2021 at 08:17:26PM +0300, Paul Sokolovsky wrote:
> 
> > > Besides, we probably don't want to prohibit side-effects in
> > > `__bool__`. That would prohibit useful tricks such as putting
> > > logging calls into a method you are trying to debug.  
> > 
> > Surely, if we do that, we wouldn't use Haskell's definition of
> > purity ;-). Rather, a practical definition of purity,
> > Python-style.  
> 
> It's not *Haskell's* definition, it's pretty much *everyone's* 
> definition of pure.
> 
> https://en.wikipedia.org/wiki/Pure_function
> 
> 
> 
> > For example, print() would be considered "pure", as its purpose is
> > to provide program output, not arbitrarily change program state  
> 
> 
> Is writing to an external file a change to program state? Keep in
> mind that programs can get state from external files.

Please reread the reply about "not having non-local side
effects". NotHavingNonLocalSideEffects is a bit longish for an
annotation identifier though...

> 
> I would say that what you are describing is not a distinction between 
> pure and impure functions,

You say that as if you propose some better identifier for
annotation ;-). I personally would be fine if the annotation is:

def print(*Any) -> PythoniclyPure: ...

I'm talking about small-scale semantic distinctions required for capture
needed large-scale semantic effect. Naming, when it comes to it, will
be subject of long, looooooong bikeshedding. (Which already started,
thanks!)

> based on whether or not they can be safely 
> optimised away without a change in visible behaviour. The distinction 
> you are proposing is into two arbitrary sets of functions, some of
> which can be optimized away and some which can't, regardless of
> whether or not that optimisation leads to change in visible behaviour.
> 
> If you want to argue for that, fine, do so, but don't call impure 
> functions "pure".

[]

-- 
Best regards,
 Paul                          mailto:pmis...@gmail.com
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/QBWTRDJZHDXYAOY42DZMETRNPOLHPFZH/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to