Author: abaine Date: Sun Aug 19 22:07:40 2007 New Revision: 185
Modified: trunk/funds/src/queue.lisp Log: Added map-queue and queue-as-list.
Modified: trunk/funds/src/queue.lisp ============================================================================== --- trunk/funds/src/queue.lisp (original) +++ trunk/funds/src/queue.lisp Sun Aug 19 22:07:40 2007 @@ -45,3 +45,17 @@ (defun queue-empty-p (q) "Whether the given queue does not contain any items." (tree-empty-p (queue-heap q))) + +(defun map-queue (function q) + "A queue containing items that are the result of applying function to +the items in the given queue." + (make-queue :next-priority (queue-next-priority q) + :heap (map-tree #'(lambda (tree) + (funcall function (bt-value tree))) + (queue-heap q)))) + +(defun queue-as-list (q) + "The elements in the given queue, returned as a list, in the order they +would be dequeued from the given queue." + (mapcar #'cdr (sort (tree-as-alist (queue-heap q)) + #'< :key #'car)))