I updated my track-best library to allow you to keep all of the the things tied for best. The WITH-TRACK-BEST
macro now accepts the :KEEP-TIES
keyword parameter.
Here are some examples of using the :KEEP-TIES
option. For all of the examples, we will use the same sequence of TRACK
calls:
(defun track-numbers ()
(track :one 1)
(track :uno 1)
(track :two 2)
(track :dos 2)
(track :one 1)
(track :uno 1)
(track :two 2)
(track :dos 2)
Here are some calls with :KEEP-TIES
as NIL
(the default):
(with-track-best (:keep 1 :keep-ties nil) (track-numbers))
=> (values :TWO 2)
(with-track-best (:keep 3 :keep-ties nil) (track-numbers))
=> (values (:TWO :DOS :ONE) (2 2 1))
=> (values :TWO 2)
(with-track-best (:keep 3 :keep-ties nil) (track-numbers))
=> (values (:TWO :DOS :ONE) (2 2 1))
Here are some calls with :KEEP-TIES
as T
:
(with-track-best (:keep 1 :keep-ties t) (track-numbers))
=> (values (:TWO :DOS) (2 2))
(with-track-best (:keep 3 :keep-ties t) (track-numbers))
=> (values (:TWO :DOS :ONE :UNO) (2 2 1 1))
=> (values (:TWO :DOS) (2 2))
(with-track-best (:keep 3 :keep-ties t) (track-numbers))
=> (values (:TWO :DOS :ONE :UNO) (2 2 1 1))