From a1bd9cd4826b919df4ae773dd0472dd8f9c6b2f2 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 25 Apr 2015 11:51:55 -0400 Subject: [PATCH] Add COUNT aggregate to forward-chaining example --- prospect/examples/forward-chaining.rkt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/prospect/examples/forward-chaining.rkt b/prospect/examples/forward-chaining.rkt index d8cb57d..bcc0768 100644 --- a/prospect/examples/forward-chaining.rkt +++ b/prospect/examples/forward-chaining.rkt @@ -7,6 +7,21 @@ (spawn-timer-driver) +(spawn (lambda (e old-count) + (match e + [(? patch?) + (define-values (in out) + (patch-project/set e (compile-projection `(parent ,(?!) ,(?!))))) + (define new-count (+ old-count (set-count in) (- (set-count out)))) + (printf "New parent-record count: ~v\n" new-count) + (transition new-count + (list (retract `(parent-count ,?)) + (assert `(parent-count ,new-count))))] + [_ #f])) + 0 + (sub `(parent ,? ,?)) + (assert `(parent-count 0))) + (define (insert-record record . monitors) (printf "Record ~v inserted, depending on ~v\n" record monitors) (spawn (lambda (e s)