From e4f7c956d483d06d310449e9076dbae81f32dd8e Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Fri, 4 Feb 2022 00:06:19 +0100 Subject: [PATCH] utils: Type pretty-print-set-sets. --- scribblings/utils.scrbl | 11 +++++++++++ utils.rkt | 27 ++++++++++++--------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/scribblings/utils.scrbl b/scribblings/utils.scrbl index bc8e1cb..692b755 100644 --- a/scribblings/utils.scrbl +++ b/scribblings/utils.scrbl @@ -254,6 +254,17 @@ Pretty prints a set by listing its elements in alphabetic order. (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 graph utilities} @defproc[(dotit [graph Graph]) Void]{ diff --git a/utils.rkt b/utils.rkt index 2a7b7ef..bfb6b11 100644 --- a/utils.rkt +++ b/utils.rkt @@ -21,7 +21,7 @@ extract-symbols any->string stringify-variable-mapping string->any handle-org-booleans 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 dotit) + list-sets->list-strings pretty-print-set pretty-print-set-sets dotit) (define-type Variable Symbol) (define-type (VariableMapping A) (Immutable-HashTable Variable A)) @@ -287,6 +287,15 @@ (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}"))) + (define dotit (compose display graphviz)) ) @@ -295,14 +304,13 @@ extract-symbols 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 dotit) + list-sets->list-strings pretty-print-set pretty-print-set-sets dotit) ;;; Untyped section. (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)) @@ -344,17 +352,6 @@ (or/c (list/c key-contract val-contract) (cons/c key-contract val-contract))) -;;; Pretty-prints a set of sets of symbols. -;;; -;;; Typically used for pretty-printing the annotations on the edges of -;;; the state graph. -(define (pretty-print-set-sets ms) - (string-join (for/list ([m ms]) (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}"))) - ;;; ========================== ;;; Additional graph utilities