From dcc6bbcbe7fcb2397f1afee44875e080b0a53837 Mon Sep 17 00:00:00 2001 From: Sam Caldwell Date: Wed, 12 Sep 2018 19:32:06 -0400 Subject: [PATCH] file system roles w messages --- racket/typed/examples/roles/file-system.rkt | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 racket/typed/examples/roles/file-system.rkt diff --git a/racket/typed/examples/roles/file-system.rkt b/racket/typed/examples/roles/file-system.rkt new file mode 100644 index 0000000..7113c3c --- /dev/null +++ b/racket/typed/examples/roles/file-system.rkt @@ -0,0 +1,34 @@ +#lang typed/syndicate/roles + +(define-constructor (file name content) + #:type-constructor FileT + #:with File (FileT String String)) + +(define-type-alias FileDemand + (Observe (FileT String ★/t))) + +(define-constructor (save name content) + #:type-constructor SaveT + #:with Save (SaveT String String)) + +(define-constructor (delete name) + #:type-constructor DeleteT + #:with Delete (DeleteT String)) + +;; unique role +(define-type-alias Server + (Role (server) + (Reacts (Know FileDemand) + (Role (_) + (Shares File))) + (Reacts (Message Save)) + (Reacts (Message Delete)))) + +(define-type-alias Reader + (Role (reader) + (Shares FileDemand))) + +(define-type-alias Writer + (Role (writer) + (Sends Save) + (Sends Delete))) \ No newline at end of file