Cloning a dlist did not clone its nodes, and so was useless
parent
7bb9e8d3ce
commit
f1a1a4c1cb
basis/dlists
|
@ -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> 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 -- )
|
||||
[ obj>> ] prepose dlist-each-node ; inline
|
||||
|
||||
: dlist>seq ( dlist -- seq )
|
||||
[ ] pusher [ dlist-each ] dip ;
|
||||
|
||||
: 1dlist ( obj -- dlist ) <dlist> [ push-front ] keep ;
|
||||
|
||||
M: dlist clone
|
||||
<dlist> [
|
||||
[ push-back ] curry dlist-each
|
||||
] keep ;
|
||||
|
||||
INSTANCE: dlist deque
|
||||
|
|
Loading…
Reference in New Issue