utils: Add pretty-print-set-sets.

This commit is contained in:
Sergiu Ivanov 2020-12-23 14:39:35 +01:00
parent 260ba83f02
commit 50f4c56102
3 changed files with 24 additions and 3 deletions

View File

@ -253,6 +253,18 @@ Pretty prints a set by listing its elements in alphabetic order.
@examples[#:eval utils-evaluator @examples[#:eval utils-evaluator
(pretty-print-set (set 'a 'b 1)) (pretty-print-set (set 'a 'b 1))
]} ]}
@defproc[(pretty-print-set-sets (ms (Setof (Setof Any)))) String]{
Pretty-prints a set of sets of symbols.
Typically used for pretty-printing the annotations on the edges of
a state graph.
@examples[#:eval utils-evaluator
(pretty-print-set-sets (set (set 'a 'b) (set 'c)))
]}
@section{Additional list and hash map utilities} @section{Additional list and hash map utilities}
@section{Functions and procedures} @section{Functions and procedures}

View File

@ -10,8 +10,7 @@
(provide (provide
;; Functions ;; Functions
(contract-out [pretty-print-set-sets (-> (set/c (set/c symbol?) #:kind 'dont-care) string?)] (contract-out [update-vertices/unweighted (-> graph? (-> any/c any/c) graph?)]
[update-vertices/unweighted (-> graph? (-> any/c any/c) graph?)]
[update-graph (->* (graph?) [update-graph (->* (graph?)
(#:v-func (-> any/c any/c) (#:v-func (-> any/c any/c)
#:e-func (-> any/c any/c)) #:e-func (-> any/c any/c))

View File

@ -10,7 +10,8 @@
any->string stringify-variable-mapping string->any map-sexp any->string stringify-variable-mapping string->any map-sexp
read-org-sexp unorg unstringify-pairs read-org-sexp unorg unstringify-pairs
read-org-variable-mapping unorgv read-symbol-list drop-first-last read-org-variable-mapping unorgv read-symbol-list drop-first-last
list-sets->list-strings pretty-print-set list-sets->list-strings
pretty-print-set pretty-print-set-sets
;; Syntax ;; Syntax
auto-hash-ref/explicit auto-hash-ref/:) auto-hash-ref/explicit auto-hash-ref/:)
@ -291,3 +292,12 @@
(module+ test (module+ test
(test-case "pretty-print-set" (test-case "pretty-print-set"
(check-equal? (pretty-print-set (set 'a 'b 1)) "1 a b"))) (check-equal? (pretty-print-set (set 'a 'b 1)) "1 a b")))
(: pretty-print-set-sets (-> (Setof (Setof Any)) String))
(define (pretty-print-set-sets ms)
(string-join (for/list ([m ms]) : (Listof String)
(format "{~a}" (pretty-print-set m))) ""))
(module+ test
(test-case "pretty-print-set-sets"
(check-equal? (pretty-print-set-sets (set (set 'a 'b) (set 'c))) "{a b}{c}")))