On Mon, Feb 24, 2020, 9:27 AM Rhodri James <rhodri@kynesim.co.uk> wrote:
On 23/02/2020 18:33, Steve Jorgensen wrote:
In many ways, a string is more useful to treat as a scalar than a
collection, so drilling down into collections and ending up iterating individual characters as the leaves is often 1 step too far.
I think the key word here should be "sometimes". A lot of the time I do treat strings as scalars (or more often, string.split() as a sequence of scalars), but sometimes a string absolutely is a sequence of characters, and I want to be able to treat it as such.
Both of these needs are straightforward to address with my suggested AtomicString. def descend(obj, ...): if something: descend(AtomicString(s) for s in obj.split()) elif otherthing: descend(AtomicString (c) for c in obj) else: # non-string stuff, e.g. lists