Add enabled?.
This commit is contained in:
parent
6518ae2fdd
commit
9efca22f7b
2 changed files with 29 additions and 1 deletions
16
rs.rkt
16
rs.rkt
|
@ -5,7 +5,7 @@
|
|||
|
||||
(provide
|
||||
Species (struct-out reaction) Reaction
|
||||
make-reaction)
|
||||
make-reaction enabled?)
|
||||
|
||||
(module+ test
|
||||
(require typed/rackunit))
|
||||
|
@ -26,6 +26,20 @@
|
|||
(test-case "make-reaction"
|
||||
(check-equal? (make-reaction '(a b) '(c d) '(e f))
|
||||
(reaction (set 'b 'a) (set 'c 'd) (set 'f 'e)))))
|
||||
|
||||
(: enabled? (-> Reaction (Setof Species) Boolean))
|
||||
(define/match (enabled? r s)
|
||||
[((reaction r i _) s)
|
||||
(and (subset? r s) (set-empty? (set-intersect i s)))])
|
||||
|
||||
(module+ test
|
||||
(test-case "enabled?"
|
||||
(check-true (enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'a 'b 'e)))
|
||||
(check-false (enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'a 'b 'c)))
|
||||
(check-false (enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'b 'e)))))
|
||||
)
|
||||
|
||||
(require graph "utils.rkt" "generic.rkt")
|
||||
|
|
|
@ -59,6 +59,20 @@ instead of set syntax.
|
|||
(make-reaction '(a b) '(c d) '(e f))
|
||||
]}
|
||||
|
||||
@defproc[(enabled? [r Reaction] [s (Setof Species)]) Boolean]{
|
||||
|
||||
A @racket[Reaction] is enabled on a set of species if all of its
|
||||
reactants are in the set and none of its inhibitors are.
|
||||
|
||||
@ex[
|
||||
(enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'a 'b 'e))
|
||||
(enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'a 'b 'c))
|
||||
(enabled? (make-reaction '(a b) '(c d) '())
|
||||
(set 'b 'e))
|
||||
]}
|
||||
|
||||
@section{Org-mode interaction}
|
||||
|
||||
This section contains some useful primitives for
|
||||
|
|
Loading…
Reference in a new issue