Unbalanced priority search pennants.
> data PSQ k p = Void | Winner (Binding k p) (LTree k p) k |
Playing a match.
> play :: (Ord k, Ord p) => PSQ k p -> PSQ k p -> PSQ k p |
Tournament view.
> data TourView k p = Null | Single (Binding k p) | PSQ k p `Play` PSQ k p |
> empty = Void |
> minView Void = Empty |
Determining the second-best player.
> secondBest :: (Ord k, Ord p) => LTree k p -> k -> PSQ k p |
> lookup k q = case tourView q of |
> adjust f k q = case tourView q of |