{ $side-effects "heap" } ;
HELP: slurp-heap
-{ $values
- { "heap" heap } { "quot" quotation } }
-{ $description "Removes values from a heap and processes them with the quotation until the heap is empty." } ;
+{ $values { "heap" heap } { "quot" { $quotation ( value key -- ) } } }
+{ $description "Removes entries from a heap and processes them with the quotation until the heap is empty." } ;
: check-heap ( heap -- heap )
dup heap? [ not-a-heap ] unless ; inline
-: slurp-heap ( heap quot: ( elt -- ) -- )
+: slurp-heap ( heap quot: ( value key -- ) -- )
[ check-heap ] dip over heap-empty? [ 2drop ] [
- [ [ heap-pop drop ] dip call ] [ slurp-heap ] 2bi
+ [ [ heap-pop ] dip call ] [ slurp-heap ] 2bi
] if ; inline recursive
: >min-heap ( assoc -- min-heap )
<PRIVATE
: (heapsort) ( alist accum -- sorted-seq )
- [ >min-heap ] [ [ [ push ] curry slurp-heap ] keep ] bi* ; inline
+ [ >min-heap ] [ [ [ nip push ] curry slurp-heap ] keep ] bi* ; inline
PRIVATE>