diff options
Diffstat (limited to 'tests/demo.apl')
-rw-r--r-- | tests/demo.apl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/demo.apl b/tests/demo.apl new file mode 100644 index 0000000..7a6ddca --- /dev/null +++ b/tests/demo.apl @@ -0,0 +1,31 @@ +⍝ The following demonstrates message passing between an 'iota sever', +⍝ and a client (the user of the iota function). The client always initiates +⍝ communication, and the server must be running, but the client should not +⍝ be able to notice a difference between monadic ⍳ and the iota function, +⍝ even though one does the computation in a different thread. + +iotaServer←{ + msg←1⍨⍇0 + msg≡'stop': ⎕←'Bye bye from indexer' + (from num)←msg + _←(⍳num)⍈from + ∇⍵ +} + +id←0 ⍝ this is an invalid thread id, so it is a sane starting point + +start←{ + id=0: iotaServer&⍬ + id +} + +stop←{ + 'stop'⍈id +} + +iota←{ + ⍝ Sending messages to a nonexisting thread throws a domain error (11) + 11::'Sorry, the iota server is not running' + _←(⎕self ⍵)⍈id + 1⍨⍇0 +} |