From a5dc977d73e5c12702f329a86fd2cbca6e5e0905 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 18 Jul 2014 11:31:55 -0700 Subject: [PATCH] Add sorted-map-keys --- minimart/sorted-map.rkt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/minimart/sorted-map.rkt b/minimart/sorted-map.rkt index f2c952c..b6a3b78 100644 --- a/minimart/sorted-map.rkt +++ b/minimart/sorted-map.rkt @@ -17,10 +17,13 @@ sorted-map-get sorted-map-size sorted-map-max - sorted-map-delete) + sorted-map-delete + sorted-map-keys + ) (require "canonicalize.rkt") (require "memoize.rkt") +(require racket/set) ; A purely functional sorted-map library. @@ -445,3 +448,11 @@ ; Delete the key, and color the new root black: (blacken (del node))) + + +;; tonyg 20140718 Retrieve a set of the keys of smap +(define (sorted-map-keys smap [empty-set (set)]) + (let walk ((node smap) (acc empty-set)) + (match node + [(T! l k v r) (walk l (set-add (walk r acc) k))] + [(L _) acc])))