PasteRack.org
Paste # 67044
2016-08-26 14:58:34

Fork as a new paste.

Paste viewed 170 times.


Embed:

mutable sets inside immutable sets work

  1. #lang racket
  2. (define s1 (mutable-set))
  3. (define s2 (mutable-set))
  4. (define sa (set s1 s2))
  5. (define sb (set s2 s1))
  6.  
  7. (for ([i (in-list (range 10000))])
  8.   (set-add! s1 (format "The number ~a ~a" i (make-string i #\x))))
  9.  
  10. (for ([i (in-list (reverse (range 10000)))])
  11.   (set-add! s2 (format "The number ~a ~a" i (make-string i #\x))))
  12.  
  13. ;; identical
  14. (equal-hash-code s1)
  15. (equal-hash-code s2)
  16.  
  17. ;; identical
  18. (equal-secondary-hash-code s1)
  19. (equal-secondary-hash-code s2)
  20.  
  21. ;; #t
  22. (equal? s1 s2)
  23.  
  24. ;; identical
  25. (equal-hash-code sa)
  26. (equal-hash-code sb)
  27.  
  28. ;; identical
  29. (equal-secondary-hash-code sa)
  30. (equal-secondary-hash-code sb)
  31.  
  32. (equal? sa sb) ;; is #t, but is #f when sa and sb are both mutable sets

=>

-656372666

-656372666

-429934224

-429934224

#t

60474370

60474370

959971741

959971741

#t