juan_gandhi: (Default)
[personal profile] juan_gandhi
Scala:
  scala> List(Set(1,2)).flatten == List(Set(2,1)).flatten
res3: Boolean = false


Бля.

Date: 2012-07-02 07:38 pm (UTC)
From: [identity profile] lomeo.livejournal.com
См. реализацию вот этого класса и всё станет ясно:
https://github.com/scala/scala/blob/v2.9.2/src/library/scala/collection/immutable/Set.scala#L92

Date: 2012-07-02 07:41 pm (UTC)
From: [identity profile] migmit.livejournal.com
Никакая реализация не оправдывает косяк интерфейса.

Date: 2012-07-02 07:48 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
а чё интерфейса?

обязан ли set перебирать одинаковые элементы в одинаковом порядке?

Date: 2012-07-02 07:53 pm (UTC)
From: [identity profile] glocka.livejournal.com
Не обязан, в общем случае сравнение элементов вообще может быть не определено.

Date: 2012-07-02 07:54 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Перебирать не обязан, но equational axiom должна бы поддерживаться для "нормальных" случаев.

Date: 2012-07-02 07:59 pm (UTC)
From: [identity profile] migmit.livejournal.com
Множества {1,2} и {2,1} совпадают. Аксиома экстенсиональности.

Date: 2012-07-02 08:28 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Кто-нибудь гарантирует, что List(Set(1,2))==List(Set(1,2)) (говоря по-простому, referential transparency)?

Date: 2012-07-02 08:28 pm (UTC)
From: [identity profile] lomeo.livejournal.com
Множества-то как раз равны:

scala> Set(1,2) == Set(2,1)
res0: Boolean = true

Хотя принципиально, конечно, согласен.

Date: 2012-07-02 07:53 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Реализация - это или следствие не вполне адекватного понимания, или признание грустной (гнусной) реальности.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

September 2025

S M T W T F S
 1 2345 6
78 9 10 111213
14 151617 181920
212223 24252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 28th, 2025 02:15 pm
Powered by Dreamwidth Studios