]> gitweb.factorcode.org Git - factor.git/commitdiff
hash-sets: need to define M\ hash-set hashcode*.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 9 Jul 2015 15:35:43 +0000 (08:35 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 9 Jul 2015 15:35:43 +0000 (08:35 -0700)
core/hash-sets/hash-sets-tests.factor
core/hash-sets/hash-sets.factor

index a85f1a49e1930cad5f61b2d21f8acd3f1b65dc01..75c91438642776247d563e082d915807487bea6c 100644 (file)
@@ -38,3 +38,9 @@ IN: hash-sets.tests
 { { } } [ { 1 2 3 } duplicates ] unit-test
 { f } [ { 1 2 3 } >hash-set duplicates ] unit-test
 { { 1 } } [ { 1 2 1 } duplicates ] unit-test
+
+{ HS{ HS{ { 2 1 } { 1 2 } } } } [
+    HS{ } clone
+    HS{ { 1 2 } { 2 1 } } over adjoin
+    HS{ { 2 1 } { 1 2 } } over adjoin
+] unit-test
index 6f2ed9eb503efe16c33504772eb56c747a302137..02cb8a869ee2ec51147b48290d150be4feb8993e 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2010 Daniel Ehrenberg
 ! Copyright (C) 2005, 2011 John Benediktsson, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays growable.private hash-sets
+USING: accessors arrays combinators growable.private hash-sets
 hashtables.private kernel kernel.private math math.private
 sequences sequences.private sets sets.private slots.private
 vectors ;
@@ -193,6 +193,12 @@ M: hash-set set=
         ] [ 2drop f ] if
     ] [ call-next-method ] if ;
 
+M: hash-set hashcode*
+    [
+        dup cardinality 1 eq?
+        [ members hashcode* ] [ nip cardinality ] if
+    ] recursive-hashcode ;
+
 ! Default methods
 
 M: f fast-set drop 0 <hash-set> ;