Cloning a dlist did not clone its nodes, and so was useless
parent
7bb9e8d3ce
commit
f1a1a4c1cb
|
@ -77,3 +77,10 @@ IN: dlists.tests
|
||||||
[ f ] [ <dlist> 3 over push-front 4 over push-back -1 swap deque-member? ] unit-test
|
[ f ] [ <dlist> 3 over push-front 4 over push-back -1 swap deque-member? ] unit-test
|
||||||
|
|
||||||
[ f ] [ <dlist> 0 swap deque-member? ] unit-test
|
[ f ] [ <dlist> 0 swap deque-member? ] unit-test
|
||||||
|
|
||||||
|
! Make sure clone does the right thing
|
||||||
|
[ V{ 2 1 } V{ 2 1 3 } ] [
|
||||||
|
<dlist> 1 over push-front 2 over push-front
|
||||||
|
dup clone 3 over push-back
|
||||||
|
[ dlist>seq ] bi@
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -154,6 +154,14 @@ M: dlist clear-deque ( dlist -- )
|
||||||
: dlist-each ( dlist quot -- )
|
: dlist-each ( dlist quot -- )
|
||||||
[ obj>> ] prepose dlist-each-node ; inline
|
[ obj>> ] prepose dlist-each-node ; inline
|
||||||
|
|
||||||
|
: dlist>seq ( dlist -- seq )
|
||||||
|
[ ] pusher [ dlist-each ] dip ;
|
||||||
|
|
||||||
: 1dlist ( obj -- dlist ) <dlist> [ push-front ] keep ;
|
: 1dlist ( obj -- dlist ) <dlist> [ push-front ] keep ;
|
||||||
|
|
||||||
|
M: dlist clone
|
||||||
|
<dlist> [
|
||||||
|
[ push-back ] curry dlist-each
|
||||||
|
] keep ;
|
||||||
|
|
||||||
INSTANCE: dlist deque
|
INSTANCE: dlist deque
|
||||||
|
|
Loading…
Reference in New Issue