Они сломали матанализ и всю теорию множеств

Apr 02, 2019 17:58

https://bugs.python.org/issue36507

>>> x=frozenset()
>>> y=frozenset(frozenset())
>>> x is y
True

UPD: нет, мои кривые руки с синтаксисом frozenset'а. Удаляю.

python

Leave a comment

Comments 3

tzirechnoy April 2 2019, 15:10:32 UTC
По-моему, ты забыл сделать set.

То есть x ещё ничего (и да, frozenset() is frozenset({})), а y у тебя просто приведение x к типу frozenset. А надо y=frozenset({x}).

Reply

amarao_san April 2 2019, 15:34:03 UTC
is - не приведение по типу.

Кстати, такая же херня и с tuple'ами.
b=(((())))
>>> b
()

Reply

yurikhan April 2 2019, 19:45:41 UTC

Херня с таплами объясняется тем, что здесь конструируется единственный тапл, а все остальные круглые скобки интерпретируются как подвыражение в скобках. Чтобы сделать одноэлементный тапл, надо запятую поставить.

>>> b = ((((),),),)
>>> b
((((),),),)

Алсо к формулировке из тикета: типичное теоретико-множественное построение натуральной арифметики определяет 0 как {}, а (n+1) как n ∪ {n}, то есть 1 = {{}}, 2 = {{{}}, {}}, 3 = { {{{}}, {}}, {{}}, {} } и т.д. Это даёт то желательное свойство, что представление числа n является множеством, содержащим n элементов: len(n) == n; а также позволяет реализовывать сравнения вида n ≤ m как n ⊆ m и n < m как n ∊ m.

Reply


Leave a comment

Up