This module defines some basic concrete protocols, namely protocols for transferring a unit and a boolean.
Some protocol combinators are provided to form new protocols from old protocols. Eg one can form a product of two protocols to get a protocol for query-answer dialogues about a pair of values. Similarly, one can construct protocols for a sum of two types, a maybe type and a list type.
Any protocol can be also extended to include effort indices in queries or to allow incremental computation with non-blocking queries on progress, multiple dialogue thread tracking and the communication of a failure.
TODO: add protocols for
- game-theoretic HO functions