Implement equal? on dlists. Fixes #338.
parent
7699fb92b1
commit
e57b8e5e4a
|
@ -85,3 +85,13 @@ IN: dlists.tests
|
||||||
[ V{ 2 4 } ] [ <dlist> { 1 2 3 4 5 } over push-all-back [ even? ] dlist-filter dlist>seq ] unit-test
|
[ V{ 2 4 } ] [ <dlist> { 1 2 3 4 5 } over push-all-back [ even? ] dlist-filter dlist>seq ] unit-test
|
||||||
[ V{ 0 2 4 } ] [ <dlist> { 0 1 2 3 4 5 } over push-all-back [ even? ] dlist-filter dlist>seq ] unit-test
|
[ V{ 0 2 4 } ] [ <dlist> { 0 1 2 3 4 5 } over push-all-back [ even? ] dlist-filter dlist>seq ] unit-test
|
||||||
|
|
||||||
|
[ t ] [ DL{ } DL{ } = ] unit-test
|
||||||
|
[ t ] [ DL{ 1 } DL{ 1 } = ] unit-test
|
||||||
|
[ t ] [ DL{ 1 2 } DL{ 1 2 } = ] unit-test
|
||||||
|
[ t ] [ DL{ 1 1 } DL{ 1 1 } = ] unit-test
|
||||||
|
[ f ] [ DL{ 1 2 3 } DL{ 1 2 } = ] unit-test
|
||||||
|
[ f ] [ DL{ 1 2 } DL{ 1 2 3 } = ] unit-test
|
||||||
|
[ f ] [ DL{ } DL{ 1 } = ] unit-test
|
||||||
|
[ f ] [ DL{ f } DL{ 1 } = ] unit-test
|
||||||
|
[ f ] [ f DL{ } = ] unit-test
|
||||||
|
[ f ] [ DL{ } f = ] unit-test
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
|
! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
|
||||||
! Slava Pestov.
|
! Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors combinators deques fry hashtables kernel math
|
USING: accessors arrays combinators combinators.short-circuit
|
||||||
math.order parser search-deques sequences summary vocabs.loader ;
|
deques fry hashtables kernel parser search-deques sequences
|
||||||
|
summary vocabs.loader ;
|
||||||
IN: dlists
|
IN: dlists
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -33,6 +34,26 @@ M: dlist deque-empty? front>> not ; inline
|
||||||
|
|
||||||
M: dlist-node node-value obj>> ;
|
M: dlist-node node-value obj>> ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: dlist-nodes= ( dlist-node/f dlist-node/f -- ? )
|
||||||
|
{
|
||||||
|
[ [ dlist-node? ] both? ]
|
||||||
|
[ [ obj>> ] bi@ = ]
|
||||||
|
} 2&& ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
M: dlist equal?
|
||||||
|
over dlist? [
|
||||||
|
[ front>> ] bi@
|
||||||
|
[ 2dup dlist-nodes= ]
|
||||||
|
[ [ next>> ] bi@ ] while
|
||||||
|
2array { f f } =
|
||||||
|
] [
|
||||||
|
2drop f
|
||||||
|
] if ;
|
||||||
|
|
||||||
: set-prev-when ( dlist-node dlist-node/f -- )
|
: set-prev-when ( dlist-node dlist-node/f -- )
|
||||||
[ prev<< ] [ drop ] if* ; inline
|
[ prev<< ] [ drop ] if* ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue