From e425895a315d65ff9ca1e2d7911c2fd21d49fe5e Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Mon, 9 May 2022 18:59:23 +0000 Subject: =?UTF-8?q?Fix=20some=20nasty=20bugs=20with=20empty=20lines=20in?= =?UTF-8?q?=20dfns,=20and=20with=20stranding=20of=20=E2=8D=BA=20and=20?= =?UTF-8?q?=E2=8D=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/chain.apl | 7 ++++--- tests/demo.apl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 tests/demo.apl (limited to 'tests') diff --git a/tests/chain.apl b/tests/chain.apl index f6ab04b..aeeab52 100644 --- a/tests/chain.apl +++ b/tests/chain.apl @@ -1,8 +1,9 @@ worker←{ - msg←{1}⍇0 - ⎕←'Worker id ',(⍕⎕self),' got message: ',(⍕msg),' forwarding to ',⍕⍵ + msg←1⍨⍇0 ⍵≡⍬: ⎕←'DONE' + ⎕←'Worker id ',(⍕⎕self),' got message: ',(⍕msg) + ⎕←'Forwarding from ',(⍕⎕self), ' to ',⍕⍵ msg⍈⍵ } -last←worker&⍣100⊢⍬ +last←worker&⍣10⊢⍬ 'Hello there'⍈last 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 +} -- cgit v1.2.3