diff --git a/basis/dlists/dlists-tests.factor b/basis/dlists/dlists-tests.factor index 1ca7c0771a..1198ec270a 100644 --- a/basis/dlists/dlists-tests.factor +++ b/basis/dlists/dlists-tests.factor @@ -85,3 +85,13 @@ IN: dlists.tests [ V{ 2 4 } ] [ { 1 2 3 4 5 } over push-all-back [ even? ] dlist-filter dlist>seq ] unit-test [ V{ 0 2 4 } ] [ { 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 diff --git a/basis/dlists/dlists.factor b/basis/dlists/dlists.factor index 710c9d94fb..c385b57973 100644 --- a/basis/dlists/dlists.factor +++ b/basis/dlists/dlists.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman, ! Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors combinators deques fry hashtables kernel math -math.order parser search-deques sequences summary vocabs.loader ; +USING: accessors arrays combinators combinators.short-circuit +deques fry hashtables kernel parser search-deques sequences +summary vocabs.loader ; IN: dlists > not ; inline M: dlist-node node-value 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 -- ) [ prev<< ] [ drop ] if* ; inline