1 USING: accessors assocs deques dlists growable kernel math
6 GENERIC: count ( obj -- n )
8 M: sequence count length ;
9 M: assoc count assoc-size ;
10 M: set count cardinality ;
12 GENERIC: capacity ( obj -- n )
14 M: object capacity count ;
15 M: growable capacity underlying>> length ;
17 GENERIC: contains? ( elt obj -- ? )
19 M: sequence contains? member? ;
20 M: assoc contains? key? ;
21 M: set contains? sets:in? ;
22 M: deque contains? deque-member? ;
24 GENERIC: items ( obj -- seq )
27 M: set items members ;
28 M: assoc items >alist ;
29 M: dlist items dlist>sequence ;
31 GENERIC: empty? ( obj -- ? )
33 M: object empty? count zero? ; inline
34 M: dlist empty? front>> not ; inline
35 M: deque empty? deque-empty? ; inline
37 GENERIC: add ( elt obj -- )
39 M: sequence add push ;
42 GENERIC: lookup ( key obj -- elt )
43 M: sequence lookup nth ;
46 ! XXX: at ( key obj -- elt ) and of ( obj key -- elt )
48 GENERIC: remove ( elt obj -- )
50 M: sequence remove remove-nth! drop ;
51 M: set remove delete ;
53 GENERIC: remove-all ( obj -- )
55 M: sequence remove-all delete-all ;
56 M: assoc remove-all clear-assoc ;
57 M: set remove-all clear-set ;
58 M: deque remove-all clear-deque ;
60 GENERIC: like ( obj exemplar -- newobj )
62 M: sequence like sequences:like ;
63 M: assoc like assoc-like ;
64 M: set like set-like ;
66 GENERIC: clone-like ( obj exemplar -- newobj )
68 M: sequence clone-like sequences:clone-like ;
69 M: assoc clone-like assoc-clone-like ;