Add update-function-form->update-function/boolean and update-function-form->update-function/01.
This commit is contained in:
parent
2c2d8fbbdb
commit
181b427cd8
2 changed files with 49 additions and 0 deletions
22
networks.rkt
22
networks.rkt
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
UpdateFunctionForm (struct-out network-form) NetworkForm
|
UpdateFunctionForm (struct-out network-form) NetworkForm
|
||||||
update-function-form->update-function/any
|
update-function-form->update-function/any
|
||||||
|
update-function-form->update-function/boolean
|
||||||
|
update-function-form->update-function/01
|
||||||
)
|
)
|
||||||
|
|
||||||
(define-type (State a) (VariableMapping a))
|
(define-type (State a) (VariableMapping a))
|
||||||
|
@ -134,6 +136,26 @@
|
||||||
(define s (hash 'x #t 'y #f))
|
(define s (hash 'x #t 'y #f))
|
||||||
(define f (update-function-form->update-function/any '(and x y)))
|
(define f (update-function-form->update-function/any '(and x y)))
|
||||||
(check-equal? (f s) #f)))
|
(check-equal? (f s) #f)))
|
||||||
|
|
||||||
|
(: update-function-form->update-function/boolean (-> UpdateFunctionForm (UpdateFunction Boolean)))
|
||||||
|
(define (update-function-form->update-function/boolean form)
|
||||||
|
(λ (s) (assert-type (eval1-with s form) Boolean)))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(test-case "update-function-form->update-function/boolean"
|
||||||
|
(define s (hash 'x #t 'y #f))
|
||||||
|
(define f (update-function-form->update-function/boolean '(and x y)))
|
||||||
|
(check-equal? (f s) #f)))
|
||||||
|
|
||||||
|
(: update-function-form->update-function/01 (-> UpdateFunctionForm (UpdateFunction (U Zero One))))
|
||||||
|
(define (update-function-form->update-function/01 form)
|
||||||
|
(λ (s) (assert-type (eval1-with s form) (U Zero One))))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(test-case "update-function-form->update-function/01"
|
||||||
|
(define s (hash 'x 0 'y 1))
|
||||||
|
(define f (update-function-form->update-function/01 '(max x y)))
|
||||||
|
(check-equal? (f s) 1)))
|
||||||
)
|
)
|
||||||
|
|
||||||
(require 'typed)
|
(require 'typed)
|
||||||
|
|
|
@ -245,6 +245,33 @@ Builds an update function from an update function form.
|
||||||
(and-from-form (hash 'x #t 'y #t))
|
(and-from-form (hash 'x #t 'y #t))
|
||||||
]}
|
]}
|
||||||
|
|
||||||
|
@defproc[(update-function-form->update-function/boolean [func UpdateFunctionForm])
|
||||||
|
(UpdateFunction Boolean)]{
|
||||||
|
|
||||||
|
Like @racket[update-function-form->update-function/any], but the resulting
|
||||||
|
function operates on Boolean states.
|
||||||
|
|
||||||
|
@ex[
|
||||||
|
(define and-from-form/boolean (update-function-form->update-function/boolean '(and x y)))
|
||||||
|
(and-from-form/boolean (hash 'x #f 'y #f))
|
||||||
|
(and-from-form/boolean (hash 'x #f 'y #t))
|
||||||
|
(and-from-form/boolean (hash 'x #t 'y #f))
|
||||||
|
(and-from-form/boolean (hash 'x #t 'y #t))
|
||||||
|
]}
|
||||||
|
|
||||||
|
@defproc[(update-function-form->update-function/01 [func UpdateFunctionForm])
|
||||||
|
(UpdateFunction (U Zero One))]{
|
||||||
|
|
||||||
|
Like @racket[update-function-form->update-function/01], but the resulting
|
||||||
|
function operates on Boolean states.
|
||||||
|
|
||||||
|
@ex[
|
||||||
|
(define and-from-form/01 (update-function-form->update-function/01 '(min x y)))
|
||||||
|
(and-from-form/01 (hash 'x 0 'y 0))
|
||||||
|
(and-from-form/01 (hash 'x 0 'y 1))
|
||||||
|
(and-from-form/01 (hash 'x 1 'y 0))
|
||||||
|
(and-from-form/01 (hash 'x 1 'y 1))
|
||||||
|
]}
|
||||||
|
|
||||||
@section{Inferring interaction graphs}
|
@section{Inferring interaction graphs}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue