Rholang requirements for Mercury
All Typing is icing on the cake.
We should focus on everything else first.
Essential Features that are not currently implemented 2018-01-12
- Non-linear bindings.
- ... Tuple capture
- @ Destructuring and Process vs Name tracking. This is a very simple typing, and probably all we should promise for Mercury
- IOPairs → requires support in the tuplespace library.
- Arithmetic expressions need to act on arbritrary processes, not just quantities. (So that *x + *x will compile)
- Name unforgeability
Caveats
- We will not likely support destructuring of arbitrary processes, only values for mercury.
- We will support construction of arbitrary names. (If it comes to it, we could probably construct the names we need as values.)
When we do support process destructuring and matching, we will likely want to add an ```opaque { P }``` construction that won't destructure further.
Other requirements:
- Target library needs to be well documented.