[ prev>> ] [ next>> ] bi 2array { f f } assert= ;
[ V{ } ] [ <dlist> 1 <my-node> over push-node-back [ [ back>> ] [ ] bi delete-node ] [ ] bi dlist>sequence ] unit-test
-[ V{ 1 2 } ] [| |
+[ V{ 1 2 } t ] [| |
<dlist> :> dl
1 <my-node> :> n1 n1 dl push-node-back
2 <my-node> :> n2 n2 dl push-node-back
3 <my-node> :> n3 n3 dl push-node-back
n3 dl delete-node n3 assert-links
- dl dlist>sequence
+ dl dlist>sequence dup >dlist dl =
] unit-test
-[ V{ 1 3 } ] [| |
+[ V{ 1 3 } t ] [| |
<dlist> :> dl
1 <my-node> :> n1 n1 dl push-node-back
2 <my-node> :> n2 n2 dl push-node-back
3 <my-node> :> n3 n3 dl push-node-back
n2 dl delete-node n2 assert-links
- dl dlist>sequence
+ dl dlist>sequence dup >dlist dl =
] unit-test
-[ V{ 2 3 } ] [| |
+[ V{ 2 3 } t ] [| |
<dlist> :> dl
1 <my-node> :> n1 n1 dl push-node-back
2 <my-node> :> n2 n2 dl push-node-back
3 <my-node> :> n3 n3 dl push-node-back
n1 dl delete-node n1 assert-links
- dl dlist>sequence
+ dl dlist>sequence dup >dlist dl =
] unit-test
M: dlist-link obj>> ;
+M: dlist-link node-value obj>> ;
+
: new-dlist-link ( obj prev next class -- node )
new
swap >>next
M: dlist deque-empty? front>> not ; inline
-M: dlist-node node-value obj>> ;
-
<PRIVATE
: dlist-nodes= ( dlist-node/f dlist-node/f -- ? )
{
- [ [ dlist-node? ] both? ]
- [ [ obj>> ] bi@ = ]
+ [ [ dlist-link? ] both? ]
+ [ [ obj>> ] bi@ = ]
} 2&& ; inline
PRIVATE>
over dlist? [
[ front>> ] bi@
[ 2dup dlist-nodes= ]
- [ [ next>> ] bi@ ] while
+ [ [ next>> ] bi@ ] while
or not
] [
2drop f