diff --git a/racket/typed/examples/roles/ping-pong.rkt b/racket/typed/examples/roles/ping-pong.rkt new file mode 100644 index 0000000..16a1b9f --- /dev/null +++ b/racket/typed/examples/roles/ping-pong.rkt @@ -0,0 +1,23 @@ +#lang typed/syndicate/roles + +;; Expected Output +;; pong: 8339 + +(define-type-alias ds-type + (U (Tuple String Int) + (Observe (Tuple String ★/t)))) + +(dataspace ds-type + (spawn ds-type + (start-facet echo + (fields) + (on (asserted (tuple "ping" (bind x Int))) + (start-facet _ + (fields) + (assert (tuple "pong" x)))))) + (spawn ds-type + (start-facet serve + (fields) + (assert (tuple "ping" 8339)) + (on (asserted (tuple "pong" (bind x Int))) + (printf "pong: ~v\n" x))))) \ No newline at end of file