Add and use relax-arg-type/any.
This commit is contained in:
parent
4c3415f0ac
commit
fb56dc6589
3 changed files with 26 additions and 4 deletions
11
networks.rkt
11
networks.rkt
|
@ -679,15 +679,18 @@
|
||||||
|
|
||||||
(: pretty-print-state-graph-with (-> Graph (-> Any Any) Graph))
|
(: pretty-print-state-graph-with (-> Graph (-> Any Any) Graph))
|
||||||
(define (pretty-print-state-graph-with gr pprinter)
|
(define (pretty-print-state-graph-with gr pprinter)
|
||||||
(define (e-pprinter/any [x : Any])
|
(update-graph
|
||||||
(pretty-print-set-sets (assert-type x (Setof (Setof Any)))))
|
gr
|
||||||
(update-graph gr #:v-func pprinter #:e-func e-pprinter/any))
|
#:v-func pprinter
|
||||||
|
#:e-func (relax-arg-type/any pretty-print-set-sets (Setof (Setof Any)))))
|
||||||
|
|
||||||
(: pretty-print-state-graph (-> Graph Graph))
|
(: pretty-print-state-graph (-> Graph Graph))
|
||||||
(define (pretty-print-state-graph gr)
|
(define (pretty-print-state-graph gr)
|
||||||
(define (pprinter/any [x : Any])
|
(define (pprinter/any [x : Any])
|
||||||
(pretty-print-state (assert-type x (State Any))))
|
(pretty-print-state (assert-type x (State Any))))
|
||||||
(pretty-print-state-graph-with gr pprinter/any))
|
(pretty-print-state-graph-with
|
||||||
|
gr
|
||||||
|
(relax-arg-type/any pretty-print-state (State Any))))
|
||||||
|
|
||||||
(define ppsg pretty-print-state-graph)
|
(define ppsg pretty-print-state-graph)
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,21 @@ is abstract.
|
||||||
(eval:error (send obj abstract-increment 1))
|
(eval:error (send obj abstract-increment 1))
|
||||||
]}
|
]}
|
||||||
|
|
||||||
|
@defform[(relax-arg-type/any name arg-type)]{
|
||||||
|
|
||||||
|
Defines a unary anonymous function whose argument type is @racket[Any], and
|
||||||
|
which calls @racket[name], with the argument coerced to @racket[arg-type].
|
||||||
|
|
||||||
|
@ex[
|
||||||
|
(relax-arg-type/any add1 Number)
|
||||||
|
]
|
||||||
|
|
||||||
|
The main use of this macro is to allow easily passing different one-argument
|
||||||
|
functions as arguments of the type @racket[(-> Any Any)]. See for example
|
||||||
|
@racket[update-graph].
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@section{Hashtable injection}
|
@section{Hashtable injection}
|
||||||
|
|
||||||
This section defines some utilities to streamline the usage of hash tables
|
This section defines some utilities to streamline the usage of hash tables
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
Variable VariableMapping GeneralPair
|
Variable VariableMapping GeneralPair
|
||||||
|
|
||||||
assert-type for/first/typed for*/first/typed define/abstract/error
|
assert-type for/first/typed for*/first/typed define/abstract/error
|
||||||
|
relax-arg-type/any
|
||||||
eval-with eval1-with auto-hash-ref/explicit auto-hash-ref/:
|
eval-with eval1-with auto-hash-ref/explicit auto-hash-ref/:
|
||||||
extract-symbols any->string stringify-variable-mapping string->any
|
extract-symbols any->string stringify-variable-mapping string->any
|
||||||
handle-org-booleans map-sexp read-org-sexp unorg unstringify-pairs
|
handle-org-booleans map-sexp read-org-sexp unorg unstringify-pairs
|
||||||
|
@ -65,6 +66,9 @@
|
||||||
[(_ (name:id args:id ...))
|
[(_ (name:id args:id ...))
|
||||||
#`(define/public (name args ...) (error 'name "abstract method"))])
|
#`(define/public (name args ...) (error 'name "abstract method"))])
|
||||||
|
|
||||||
|
(define-syntax-parse-rule (relax-arg-type/any name:id arg-type:expr)
|
||||||
|
(λ ([x : Any]) (name (assert-type x arg-type))))
|
||||||
|
|
||||||
(: eval-with (-> (VariableMapping Any) Any AnyValues))
|
(: eval-with (-> (VariableMapping Any) Any AnyValues))
|
||||||
(define (eval-with ht expr)
|
(define (eval-with ht expr)
|
||||||
(parameterize ([current-namespace (make-base-namespace)])
|
(parameterize ([current-namespace (make-base-namespace)])
|
||||||
|
|
Loading…
Reference in a new issue