diff --git a/scribblings/utils.scrbl b/scribblings/utils.scrbl index 9e0d3bf..ba364fd 100644 --- a/scribblings/utils.scrbl +++ b/scribblings/utils.scrbl @@ -253,6 +253,18 @@ Pretty prints a set by listing its elements in alphabetic order. @examples[#:eval utils-evaluator (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{Functions and procedures} diff --git a/utils-untyped.rkt b/utils-untyped.rkt index 4c1a8b6..91a877c 100644 --- a/utils-untyped.rkt +++ b/utils-untyped.rkt @@ -10,8 +10,7 @@ (provide ;; Functions - (contract-out [pretty-print-set-sets (-> (set/c (set/c symbol?) #:kind 'dont-care) string?)] - [update-vertices/unweighted (-> graph? (-> any/c any/c) graph?)] + (contract-out [update-vertices/unweighted (-> graph? (-> any/c any/c) graph?)] [update-graph (->* (graph?) (#:v-func (-> any/c any/c) #:e-func (-> any/c any/c)) diff --git a/utils.rkt b/utils.rkt index 01705cf..bd117e3 100644 --- a/utils.rkt +++ b/utils.rkt @@ -10,7 +10,8 @@ any->string stringify-variable-mapping string->any map-sexp read-org-sexp unorg unstringify-pairs 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 auto-hash-ref/explicit auto-hash-ref/:) @@ -291,3 +292,12 @@ (module+ test (test-case "pretty-print-set" (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}")))