[Python-ideas] Re: Revisiting a frozenset display literal

2022-01-31 Thread Cameron Simpson
On 01Feb2022 09:13, Chris Angelico  wrote:
>On Tue, 1 Feb 2022 at 09:02, Cameron Simpson  wrote:
>> On 22Jan2022 01:41, Chris Angelico  wrote:
>> >On Sat, 22 Jan 2022 at 00:56, Joao S. O. Bueno  
>> >wrote:
>> >> At that point, I argue that despite adding still more things to
>> >> the syntax, it is one that will spare time in average than the other
>> >> way around, due to the time people, needing frozensets for
>> >> the first time in any project, waste looking for a literal syntax for them
>> >> only to find out there is not any.
>> >
>> >Have you any stats on this? There is no literal/display syntax for
>> >datetimes, regular expressions, ranges, bytearrays, or a host of other
>> >common types. How often do people reach for a literal syntax for
>> >those? (I say "literal/display" since, technically, dicts have a
>> >display syntax, not a literal, and complex numbers are written as a
>> >constant-folded sum, but in practical terms, those count. The other
>> >types don't even get that.) If frozensets are so special that they
>> >need syntax, why not ranges, which are used far more frequently?
>>
>> Well, some data.
>>
>> a) if the, for example, f{constant-set-display} syntax is generalisable
>> (notionally, where we generalise it or not), it offers a path to frozen
>> literals for other things via a prefix notation, should be become
>> desirable.
>>
>> b) literal regexps: people use these _all the time_, conceptually.
>>
>
>In other words: If we create literals for a bunch of different things,
>then frozensets would be neat, but if we don't, then other types
>should have priority. Is that correct?

I don't have a priority really. I was trying to address your "There is 
no literal/display syntax for datetimes, regular expressions, ranges, 
bytearrays, or a host of other common types. How often do people reach 
for a literal syntax for those?" question with a concrete commonplace 
example.

I expect that people often want a literal (or at least convenient) way 
to express whatever they're working with. "Make a class" only goes so 
far, though it is pretty far.

>I'm of the opinion that range objects should get literal syntax before
>frozensets do.

Maybe; I'm of the opinion that maybe they should use a similar syntactic 
approach to avoid bloating the syntaxes one must deal with. Isn't a 
slice close to a literal range?

>You're of the opinion that regexps should get literal
>syntax before frozensets do.

Very much NOT. I explicitly said I wasn't arguing for that, just arguing 
that many people write code which would be using literal regexps if they 
were there.

Personally, literal regexps are NOT ahead of frozensets in my mind. To 
quote the last piece of my post:

  I'm _not_ arguing for regexp literals in Python - IMO they're 
  undesirable, a separate argument. (Note: not "undesired", just 
  undesirable: to be avoided except when they're the right solution.)

I'm kind of -0.1 on literal regexps - it makes them _too_ convenient.

>I would *much* rather see {1,2,3}.frozen() be constant-foldable than
>f{1,2,3} as a literal.

I'm ambivalent myself. The general "prefix" approach is slowly growing 
on me. However, "{1,2,3}.frozen() be constant-foldable" is indeed 
implementable without inventing new syntax.

>(That said: I'm actually not convinced that regexps need literal
>syntax, because it wouldn't benefit alternate regexp engines on PyPI.)

That too. Unless there was a suffix syntax to attach a literal regexp to 
a specific implementation "/regexp-here/foo_class". 

Cheers,
Cameron Simpson 
___
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/VKWTMLVOLZQ45CRPPTU65FJTD6MJU6D5/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-ideas] Re: Revisiting a frozenset display literal

2022-01-31 Thread Cameron Simpson
[... big snip...]

On 22Jan2022 01:41, Chris Angelico  wrote:
>On Sat, 22 Jan 2022 at 00:56, Joao S. O. Bueno  wrote:
>> At that point, I argue that despite adding still more things to
>> the syntax, it is one that will spare time in average than the other
>> way around, due to the time people, needing frozensets for
>> the first time in any project, waste looking for a literal syntax for them
>> only to find out there is not any.
>
>Have you any stats on this? There is no literal/display syntax for
>datetimes, regular expressions, ranges, bytearrays, or a host of other
>common types. How often do people reach for a literal syntax for
>those? (I say "literal/display" since, technically, dicts have a
>display syntax, not a literal, and complex numbers are written as a
>constant-folded sum, but in practical terms, those count. The other
>types don't even get that.) If frozensets are so special that they
>need syntax, why not ranges, which are used far more frequently?

Well, some data.

a) if the, for example, f{constant-set-display} syntax is generalisable 
(notionally, where we generalise it or not), it offers a path to frozen 
literals for other things via a prefix notation, should be become 
desirable.

b) literal regexps: people use these _all the time_, conceptually.

To the latter: Perl has literal regexps, you just write:

/regexp-goes-here/

It even has a verbose commentable form of that to aid writing 
understandable regexps (hahaha!).

What, we're not Perl? True, but you see _lots_ of code like this:

# apologies if I have the argument order wrong here
if re.match('regexp-string', 'target-string'):

which effectively relies on the re module's autocaching of regexps to be 
efficient while skipping the more overt:

# top of module
foo_re = re.compile('regexp-string'[,options])

# in the main code
if m := foo_re.match('target-string'):

The former is nothing else but a metaphor for a literal regexp.

I'm _not_ arguing for regexp literals in Python - IMO they're 
undesirable, a separate argument. (Note: not "undesired", just 
undesirable: to be avoided except when they're the right solution.)

Cheers,
Cameron Simpson 
___
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/DCOH4HQ26AU2DJBEBSFUPQSIECLOOSR4/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-ideas] Re: "frozen" operator Re: Revisiting a frozenset display literal

2022-01-31 Thread Cameron Simpson
Joao, apologies for replying late - I never got back to this message.

I wrote:
>> Yes, but have you _seen_ the bickering about the existing bracket
>> choices just for frozenset? Eww. Hence the going for a distinct 
>> operator
>> altogether. Yes, I'd prefer brackets of some kind too, but they're
>> taken.

On 21Jan2022 10:29, Joao S. O. Bueno  wrote:
>> If one uses prefixes, you start from 53 valid (all latin areas, 
>> upper,
>lower and @)
>new brackets for {} .
>I can't see how they are "all taken" when the strongest argument against
>prefixing seems to be "but _only strings_ should have prefixes".
>(with the "typing f{} instead of f() is going to be a bug magnet"
>as a runner up). None of those stand up to any logical analysis

Agreed. I think I found a short prefix "f{" hard to see, but that is 
just "practice". I'm not inherently in the "but _only strings_ should 
have prefixes" camp.

My remark about the bickering was aimed at unadorned brackets eg the 
"{{frozen literal set here }}" suggestion.

Anyway, this post is just for clarification, not arguing any particular 
point.

Cheers,
Cameron Simpson 
___
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/5JVZFRHZT3P5IHES5ISTQBUKQYTVZUUH/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-ideas] Re: Revisiting a frozenset display literal

2022-01-31 Thread Chris Angelico
On Tue, 1 Feb 2022 at 09:02, Cameron Simpson  wrote:
>
> [... big snip...]
>
> On 22Jan2022 01:41, Chris Angelico  wrote:
> >On Sat, 22 Jan 2022 at 00:56, Joao S. O. Bueno  wrote:
> >> At that point, I argue that despite adding still more things to
> >> the syntax, it is one that will spare time in average than the other
> >> way around, due to the time people, needing frozensets for
> >> the first time in any project, waste looking for a literal syntax for them
> >> only to find out there is not any.
> >
> >Have you any stats on this? There is no literal/display syntax for
> >datetimes, regular expressions, ranges, bytearrays, or a host of other
> >common types. How often do people reach for a literal syntax for
> >those? (I say "literal/display" since, technically, dicts have a
> >display syntax, not a literal, and complex numbers are written as a
> >constant-folded sum, but in practical terms, those count. The other
> >types don't even get that.) If frozensets are so special that they
> >need syntax, why not ranges, which are used far more frequently?
>
> Well, some data.
>
> a) if the, for example, f{constant-set-display} syntax is generalisable
> (notionally, where we generalise it or not), it offers a path to frozen
> literals for other things via a prefix notation, should be become
> desirable.
>
> b) literal regexps: people use these _all the time_, conceptually.
>

In other words: If we create literals for a bunch of different things,
then frozensets would be neat, but if we don't, then other types
should have priority. Is that correct?

I'm of the opinion that range objects should get literal syntax before
frozensets do. You're of the opinion that regexps should get literal
syntax before frozensets do. We're broadly in agreement here.

I would *much* rather see {1,2,3}.frozen() be constant-foldable than
f{1,2,3} as a literal.

(That said: I'm actually not convinced that regexps need literal
syntax, because it wouldn't benefit alternate regexp engines on PyPI.)

ChrisA
___
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/NUU3TDWKRF4OMH6UFPEJCYG2BY6OSO52/
Code of Conduct: http://python.org/psf/codeofconduct/