heaps: fix slurp-heap to allow modifying the heap while slurping.
parent
fb9cf1219f
commit
fe377ba02a
|
@ -147,13 +147,14 @@ M: heap heap-pop*
|
||||||
M: heap heap-pop
|
M: heap heap-pop
|
||||||
[ data-first >entry< ] [ heap-pop* ] bi ;
|
[ data-first >entry< ] [ heap-pop* ] bi ;
|
||||||
|
|
||||||
: heap-pop-all ( heap -- alist )
|
: slurp-heap ( ... heap quot: ( ... value key -- ... ) -- ... )
|
||||||
check-heap [ heap-size ] keep
|
[ check-heap ] dip
|
||||||
'[ _ heap-pop swap 2array ] replicate ;
|
[ drop '[ _ heap-empty? ] ]
|
||||||
|
[ '[ _ heap-pop @ ] until ] 2bi ; inline
|
||||||
|
|
||||||
: slurp-heap ( heap quot: ( value key -- ) -- )
|
: heap-pop-all ( heap -- alist )
|
||||||
[ check-heap [ heap-size ] keep ] dip
|
[ heap-size <vector> ] keep
|
||||||
'[ _ heap-pop @ ] times ; inline
|
[ swap 2array suffix! ] slurp-heap { } like ;
|
||||||
|
|
||||||
ERROR: bad-heap-delete ;
|
ERROR: bad-heap-delete ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue