dlists: new word dlist-length for getting the length
parent
c0d1d2f331
commit
302220c535
|
@ -39,6 +39,11 @@ HELP: <hashed-dlist>
|
||||||
{ $values { "search-deque" search-deque } }
|
{ $values { "search-deque" search-deque } }
|
||||||
{ $description "Creates a new " { $link search-deque } " backed by a " { $link dlist } ", with a " { $link hashtable } " for fast membership tests." } ;
|
{ $description "Creates a new " { $link search-deque } " backed by a " { $link dlist } ", with a " { $link hashtable } " for fast membership tests." } ;
|
||||||
|
|
||||||
|
HELP: dlist-any?
|
||||||
|
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "?" boolean } }
|
||||||
|
{ $description "Just like " { $link dlist-find } " except it doesn't return the object." }
|
||||||
|
{ $notes "This operation is O(n)." } ;
|
||||||
|
|
||||||
HELP: dlist-find
|
HELP: dlist-find
|
||||||
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "obj/f" { $maybe object } } { "?" boolean } }
|
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "obj/f" { $maybe object } } { "?" boolean } }
|
||||||
{ $description "Applies the quotation to each element of the " { $link dlist } " in turn, until it outputs a true value or the end of the " { $link dlist } " is reached. Outputs either the object it found or " { $link f } ", and a boolean which is true if an object is found." }
|
{ $description "Applies the quotation to each element of the " { $link dlist } " in turn, until it outputs a true value or the end of the " { $link dlist } " is reached. Outputs either the object it found or " { $link f } ", and a boolean which is true if an object is found." }
|
||||||
|
@ -48,13 +53,13 @@ HELP: dlist-find
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
HELP: dlist-filter
|
HELP: dlist-filter
|
||||||
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "dlist'" { $link dlist } } }
|
{ $values { "dlist" dlist } { "quot" quotation } { "dlist'" dlist } }
|
||||||
{ $description "Applies the quotation to each element of the " { $link dlist } " in turn, removing the corresponding nodes if the quotation returns " { $link f } "." }
|
{ $description "Applies the quotation to each element of the " { $link dlist } " in turn, removing the corresponding nodes if the quotation returns " { $link f } "." }
|
||||||
{ $side-effects { "dlist" } } ;
|
{ $side-effects { "dlist" } } ;
|
||||||
|
|
||||||
HELP: dlist-any?
|
HELP: dlist-length
|
||||||
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "?" boolean } }
|
{ $values { "dlist" dlist } { "n" "a non-negative number" } }
|
||||||
{ $description "Just like " { $link dlist-find } " except it doesn't return the object." }
|
{ $description "Calculates the length of the linked list." }
|
||||||
{ $notes "This operation is O(n)." } ;
|
{ $notes "This operation is O(n)." } ;
|
||||||
|
|
||||||
HELP: delete-node-if*
|
HELP: delete-node-if*
|
||||||
|
|
|
@ -153,3 +153,8 @@ TUPLE: my-node < dlist-link { obj fixnum } ;
|
||||||
{ 3 2 4 1 0 } [ swap push-sorted drop ] with each
|
{ 3 2 4 1 0 } [ swap push-sorted drop ] with each
|
||||||
] keep
|
] keep
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
{ 0 5 } [
|
||||||
|
<dlist> dlist-length
|
||||||
|
{ 3 4 9 1 7 } >dlist dlist-length
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
|
! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
|
||||||
! Slava Pestov, John Benediktsson.
|
! Slava Pestov, John Benediktsson.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors arrays combinators combinators.short-circuit
|
USING: accessors combinators combinators.short-circuit deques fry
|
||||||
deques fry hashtables kernel math.order parser search-deques
|
hashtables kernel kernel.private math math.order parser search-deques
|
||||||
sequences summary vocabs.loader ;
|
sequences vocabs.loader ;
|
||||||
IN: dlists
|
IN: dlists
|
||||||
|
|
||||||
TUPLE: dlist-link
|
TUPLE: dlist-link
|
||||||
|
@ -165,6 +165,11 @@ M: dlist delete-node
|
||||||
M: dlist clear-deque
|
M: dlist clear-deque
|
||||||
f >>front f >>back drop ;
|
f >>front f >>back drop ;
|
||||||
|
|
||||||
|
: dlist-length ( dlist -- n )
|
||||||
|
0 swap [
|
||||||
|
drop { fixnum } declare 1 + f
|
||||||
|
] dlist-find-node drop ; flushable
|
||||||
|
|
||||||
: dlist-each ( ... dlist quot: ( ... value -- ... ) -- ... )
|
: dlist-each ( ... dlist quot: ( ... value -- ... ) -- ... )
|
||||||
'[ obj>> @ ] dlist-each-node ; inline
|
'[ obj>> @ ] dlist-each-node ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue