On 21Jan2022 20:57, Steven D'Aprano <st...@pearwood.info> wrote: >On Fri, Jan 21, 2022 at 11:18:27AM +1100, Cameron Simpson wrote: > >> Paired with a __freeze__ dunder method, this applies to any type, not >> just sets. (Where appropriate of course.) >> >> So: >> >> |{1,2,3}| frozen set >> |[1,2,3]| tuple! >> |any-iterable| tuple! >> |{1:2, 3:4}| frozen dict > >A frozen "any iterable" is not necessarily a tuple.
Yeah, I had misgivings myself. I can imagine the freeze operator falling back to iteration if there's no __freeze__dunder (like bool falls back to length). I can equally imagine just raising a TypeError for no __freeze__. More inclined to the latter on reflection - iterators get consumed. >For example, a frozen binary tree should probably keep the tree >structure and methods; a frozen dict.keys() should be a frozen set; Sure. According to their __freeze__. >and >its not clear what a frozen iterator should do. Should it run the >iterator to exhaustion? Seems odd. Hence thinking freezing an iterator might just make a tuple. >What about non-collections? What's a frozen re.MatchObject? A type error. Let's not get insane. The idea is a generic operator, but not everything can be used with such an operator. Cheers, Cameron Simpson <c...@cskk.id.au> _______________________________________________ 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/HVSE7HGGBCUAUEAZLOQX243R7ZBGXCSI/ Code of Conduct: http://python.org/psf/codeofconduct/