From 6058f8ec6e6aa67516f4a9fc42bef80e34f25085 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 14 Jan 2016 15:19:00 -0500 Subject: [PATCH] mini-echo examples --- prospect/examples/actor/mini-echo.rkt | 23 +++++++++++++++++++++++ prospect/examples/mini-echo.rkt | 25 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 prospect/examples/actor/mini-echo.rkt create mode 100644 prospect/examples/mini-echo.rkt diff --git a/prospect/examples/actor/mini-echo.rkt b/prospect/examples/actor/mini-echo.rkt new file mode 100644 index 0000000..ea1fb26 --- /dev/null +++ b/prospect/examples/actor/mini-echo.rkt @@ -0,0 +1,23 @@ +#lang prospect + +(require prospect/actor) + +(struct echo-req (body) #:prefab) +(struct echo-resp (body) #:prefab) + +(actor-body->spawn-action + (lambda () + (actor (forever #:collect [(count 0)] + (on (message (echo-req $body)) + (send! (echo-resp body)) + (+ count 1)))) + + (actor (forever (on (message (echo-resp $body)) + (printf "Received: ~v\n" body)))) + + (until (asserted (observe (echo-req _)))) + (until (asserted (observe (echo-resp _)))) + (send! (echo-req 0)) + (send! (echo-req 1)) + (send! (echo-req 2)) + )) diff --git a/prospect/examples/mini-echo.rkt b/prospect/examples/mini-echo.rkt new file mode 100644 index 0000000..9638fd6 --- /dev/null +++ b/prospect/examples/mini-echo.rkt @@ -0,0 +1,25 @@ +#lang prospect + +(struct echo-req (body) #:prefab) +(struct echo-resp (body) #:prefab) + +(spawn (lambda (e count) + (match e + [(message (echo-req body)) + (transition (+ count 1) + (message (echo-resp body)))] + [_ #f])) + 0 + (sub (echo-req ?))) + +(spawn (lambda (e s) + (match e + [(message (echo-resp body)) + (printf "Received: ~v\n" body) + #f] + [_ #f])) + (void) + (list (sub (echo-resp ?)) + (message (echo-req 0)) + (message (echo-req 1)) + (message (echo-req 2))))