hash-sets: separate <hash-set> and >hash-set to match other containers. Fixes #154.
parent
f4a6e10818
commit
beb5b9bf64
|
@ -1,11 +1,11 @@
|
||||||
USING: help.markup help.syntax sequences ;
|
USING: help.markup help.syntax math sequences ;
|
||||||
IN: hash-sets
|
IN: hash-sets
|
||||||
|
|
||||||
ARTICLE: "hash-sets" "Hash sets"
|
ARTICLE: "hash-sets" "Hash sets"
|
||||||
"The " { $vocab-link "hash-sets" } " vocabulary implements hashtable-backed sets. Hash sets form a class:"
|
"The " { $vocab-link "hash-sets" } " vocabulary implements hashtable-backed sets. Hash sets form a class:"
|
||||||
{ $subsection hash-set }
|
{ $subsections hash-set }
|
||||||
"Constructing new hash sets:"
|
"Constructing new hash sets:"
|
||||||
{ $subsection <hash-set> }
|
{ $subsections <hash-set> >hash-set }
|
||||||
"The syntax for hash sets is described in " { $link "syntax-hash-sets" } "." ;
|
"The syntax for hash sets is described in " { $link "syntax-hash-sets" } "." ;
|
||||||
|
|
||||||
ABOUT: "hash-sets"
|
ABOUT: "hash-sets"
|
||||||
|
@ -14,5 +14,9 @@ HELP: hash-set
|
||||||
{ $class-description "The class of hashtable-based sets. These implement the " { $link "sets" } "." } ;
|
{ $class-description "The class of hashtable-based sets. These implement the " { $link "sets" } "." } ;
|
||||||
|
|
||||||
HELP: <hash-set>
|
HELP: <hash-set>
|
||||||
|
{ $values { "capacity" number } { "hash-set" hash-set } }
|
||||||
|
{ $description "Creates a new hash set capable of storing " { $snippet "capacity" } " elements before growing." } ;
|
||||||
|
|
||||||
|
HELP: >hash-set
|
||||||
{ $values { "members" sequence } { "hash-set" hash-set } }
|
{ $values { "members" sequence } { "hash-set" hash-set } }
|
||||||
{ $description "Creates a new hash set with the given members." } ;
|
{ $description "Creates a new hash set with the given members." } ;
|
||||||
|
|
|
@ -8,7 +8,10 @@ IN: hash-sets
|
||||||
! In a better implementation, less memory would be used
|
! In a better implementation, less memory would be used
|
||||||
TUPLE: hash-set { table hashtable read-only } ;
|
TUPLE: hash-set { table hashtable read-only } ;
|
||||||
|
|
||||||
: <hash-set> ( members -- hash-set )
|
: <hash-set> ( capacity -- hash-set )
|
||||||
|
<hashtable> hash-set boa ; inline
|
||||||
|
|
||||||
|
: >hash-set ( members -- hash-set )
|
||||||
unique hash-set boa ; inline
|
unique hash-set boa ; inline
|
||||||
|
|
||||||
INSTANCE: hash-set set
|
INSTANCE: hash-set set
|
||||||
|
@ -16,12 +19,12 @@ M: hash-set in? table>> key? ; inline
|
||||||
M: hash-set adjoin table>> dupd set-at ; inline
|
M: hash-set adjoin table>> dupd set-at ; inline
|
||||||
M: hash-set delete table>> delete-at ; inline
|
M: hash-set delete table>> delete-at ; inline
|
||||||
M: hash-set members table>> keys ; inline
|
M: hash-set members table>> keys ; inline
|
||||||
M: hash-set set-like drop dup hash-set? [ members <hash-set> ] unless ;
|
M: hash-set set-like drop dup hash-set? [ members >hash-set ] unless ;
|
||||||
M: hash-set clone table>> clone hash-set boa ;
|
M: hash-set clone table>> clone hash-set boa ;
|
||||||
M: hash-set null? table>> assoc-empty? ;
|
M: hash-set null? table>> assoc-empty? ;
|
||||||
M: hash-set cardinality table>> assoc-size ;
|
M: hash-set cardinality table>> assoc-size ;
|
||||||
|
|
||||||
M: sequence fast-set <hash-set> ;
|
M: sequence fast-set >hash-set ;
|
||||||
M: f fast-set drop H{ } clone hash-set boa ;
|
M: f fast-set drop H{ } clone hash-set boa ;
|
||||||
|
|
||||||
M: sequence duplicates
|
M: sequence duplicates
|
||||||
|
@ -35,5 +38,4 @@ M: sequence duplicates
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
M: sequence all-unique?
|
M: sequence all-unique?
|
||||||
dup length <hashtable> hash-set boa
|
dup length <hash-set> [ (all-unique?) ] curry all? ;
|
||||||
[ (all-unique?) ] curry all? ;
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ IN: bootstrap.syntax
|
||||||
"H{" [ \ } [ >hashtable ] parse-literal ] define-core-syntax
|
"H{" [ \ } [ >hashtable ] parse-literal ] define-core-syntax
|
||||||
"T{" [ parse-tuple-literal suffix! ] define-core-syntax
|
"T{" [ parse-tuple-literal suffix! ] define-core-syntax
|
||||||
"W{" [ \ } [ first <wrapper> ] parse-literal ] define-core-syntax
|
"W{" [ \ } [ first <wrapper> ] parse-literal ] define-core-syntax
|
||||||
"HS{" [ \ } [ <hash-set> ] parse-literal ] define-core-syntax
|
"HS{" [ \ } [ >hash-set ] parse-literal ] define-core-syntax
|
||||||
|
|
||||||
"POSTPONE:" [ scan-word suffix! ] define-core-syntax
|
"POSTPONE:" [ scan-word suffix! ] define-core-syntax
|
||||||
"\\" [ scan-word <wrapper> suffix! ] define-core-syntax
|
"\\" [ scan-word <wrapper> suffix! ] define-core-syntax
|
||||||
|
|
|
@ -58,7 +58,7 @@ TUPLE: (astar) astar goal origin in-open-set open-set ;
|
||||||
: (init) ( from to astar -- )
|
: (init) ( from to astar -- )
|
||||||
swap >>goal
|
swap >>goal
|
||||||
H{ } clone over astar>> g<<
|
H{ } clone over astar>> g<<
|
||||||
{ } <hash-set> over astar>> in-closed-set<<
|
HS{ } clone over astar>> in-closed-set<<
|
||||||
H{ } clone >>origin
|
H{ } clone >>origin
|
||||||
H{ } clone >>in-open-set
|
H{ } clone >>in-open-set
|
||||||
<min-heap> >>open-set
|
<min-heap> >>open-set
|
||||||
|
|
Loading…
Reference in New Issue