The Askemos virtual machine follows the semantics of pi-calculus.
This design style has been widely found beneficial for instance
in Hardware (especially FPGA) Design and the Erlang programming system.
A place of the Askemos DVM executes
process step?
when it receives a message.
A reply function
reply = function(place, message)
is computed for each step, where
- reply
-
an
aggregate
denoting the answer the process step yields to the incoming
message.
The programmer used to traditional operating system terms
might think of the reply element content as a list all those
system calls which the function needs to complete
and which might modify values.
- function
-
Step response,
a two-ari function defined by the ActionDocument.
- message
-
A read only accessor to the aggregate denoting the current input.
- place
-
A r/o (read type request) or r/w (write type request) accessor
to the aggregate denoting "this" place.
Often called "me".
The input area (message and place)
and the output area (reply)
each are described as an xml document,
and the function is defined as an XSLT transformation.
These process step?
are executed by several physical
machines in parallel and a
byzantine agreement
over the value of the reply is required for the step to be actually
performed.
A place in this virtual machine
can be understood as the container of an
arrow
(See John Hughes,
Generalising Monads to Arrows)
or a continuation
which is evaluated in steps?.
- Read more at LtU:
mondas for beginners
and a collection of monad links.
-
Looks like PiDuce
implements quite a simillar processing paradigm.