On Mon, Mar 6, 2023 at 12:51 AM David Mertz, Ph.D. <david.me...@gmail.com>
wrote:

> Is it really that much longer to write `f"{s1} {s2}"` when you want that?
>

As for being that much longer: yes it is.

The more important factor is, I think, the increase in complexity +
readabiity for default strings is worth it in this case.

One nice thing to think about might be how to make string subclassing to be
more useful - so this kind of thing could be done for whoever needs it in
one more idiomatic project. The drawback is how cumbersome it is to
instantiate a string subclass compared to a string literal. (I just got an
idea, but it would be too offtopic here - if I think it is worth, I will
post it in a new thread later)




>
> Maybe a couple characters more total, but once you are in an f-string, you
> can also do a zillion other things at the same time.
>
> On Sun, Mar 5, 2023 at 10:42 PM Rob Cliffe via Python-ideas <
> python-ideas@python.org> wrote:
>
>> Tl;dr: Join strings together with exactly one space between non-blank
>> text where they join.
>>
>> I propose a meaning for
>>      s1 & s2
>> where s1 and s2 are strings.
>> Namely, that it should be equivalent to
>>      s1.rstrip() + (' ' if (s1.strip() and s2.strip()) else '') +
>> s2.lstrip()
>> Informally, this will join the two strings together with exactly one space
>> between the last non-blank text in s1 and the first non-blank text in s2.
>> Example:  " bar     " & "    foo        "        ==        " bar
>> foo        "
>>
>> This operator is associative, so there is no ambiguity in expressions
>> such as
>>      s1 & s2 & s3
>> There *is* a possible ambiguity in expressions such as
>>      s1 & s2 + s3
>> where the relative precedence of `&` and `+` matters when s2 consists
>> solely of white space.  E.g.
>>      " A " & "  " + "     C" would evaluate
>> to     " A C"
>> not to " A     C"
>> because `+` has a higher precedence than '&'.
>>
>> Utility:
>>      In decades of experience with another language which had such an
>> operator
>>      (spelt differently) I have frequently found it useful for
>> constructing
>>      human-readable output (e.g. log output, debug/error messages,
>> on-screen labels).
>>
>> Cognitive burden:
>>      This would of course be one more thing to learn.
>>      But I suggest that it is fairly intuitive that
>>          s1 + s2
>>          s1 & s2
>>      both suggest that two strings are being combined in some way.
>>
>> Bars to overcome:
>>      This change would require no fundamental change to Python;
>>      just adding an `__and__ function to the str class.
>>
>> Backward compatibility:
>>      Given that `str1 & str2` currently raises TypeError,
>>      this change would be close to 100% backward-compatible.
>>
>> Alternative meanings:
>>      As far as I know nobody has ever suggested an alternative meaning
>> for `&` on strings.
>>
>> Bikeshedding:
>>     (1) I don't think it is important for the utility of this change
>>          whether `&` strips off all whitespace, or just spaces.
>>          I think it is better if it strips off all whitespace,
>>          so that it can be understood as working similarly to strip().
>>     (2) The definition could be simplified to
>>              s1.rstrip() + ' ' + s2.lstrip()
>>          (leave an initial/final space when one string is whitespace
>> only).
>>          Again the operator would be associative.
>>          Again I don't think this is important.
>>
>> Rob Cliffe
>> _______________________________________________
>> 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/66XP7GY56XU7H3P52IJENLSWJFW53XIN/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
>
> --
> The dead increasingly dominate and strangle both the living and the
> not-yet born.  Vampiric capital and undead corporate persons abuse
> the lives and control the thoughts of homo faber. Ideas, once born,
> become abortifacients against new conceptions.
> _______________________________________________
> 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/M7H3VZFEUJFZDO3BAAVUGXNKBH6WF4NA/
> 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/2XXY57LCSNNS6SVRUIYBSA6QT2P7RH4F/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to