Resumptions
Roughly speaking, a resumption is a process which can consume a state, and then nondeterministically produce a number of outputs, each of which is either
- a new state, or
- a new state and another resumption.
Resumptions were introduced in Milner 1973. The first semantic model of resumptions is due to Plotkin 1976; it consists of a domain which satisfies the equation
R = S_\bot \to \mathcal{P}[S_\bot + S_\bot \times R]
where
References
- Resumptions were introduced under the (awfully generic) name of processes by Robin Milner in a paper presented at the 1973 Logic Colloqium in Bristol:
@inproceedings{milner_processes_1975,
series = {Studies in {Logic} and the {Foundations} of {Mathematics}},
title = {Processes: {A} {Mathematical} {Model} of {Computing} {Agents}},
volume = {80},
doi = {10.1016/S0049-237X(08)71948-7},
booktitle = {Logic Colloquium '73},
publisher = {Elsevier},
author = {Milner, Robin},
year = {1975},
pages = {157--173}
}
- The first domain-theoretic model of resumptions was introduced in
@article{plotkin_1976,
title = {A powerdomain construction},
volume = {5},
number = {3},
journal = {SIAM Journal on Computing},
author = {Plotkin, Gordon D.},
year = {1976},
pages = {452--487}
}
- Uses of a resumption (or resumption-like) monad in the context of pure functional programming appear in
@article{claessen_1999,
title = {A poor man's concurrency monad},
volume = {9},
doi = {10.1017/S0956796899003342},
pages = {313--323},
number = {3},
journaltitle = {Journal of Functional Programming},
author = {Claessen, Koen},
date = {1999}
}
@article{pirog_2012,
title = {Tracing monadic computations and representing effects},
volume = {76},
doi = {10.4204/EPTCS.76.8},
pages = {90--111},
journaltitle = {Electronic Proceedings in Theoretical Computer Science},
author = {Piróg, Maciej and Gibbons, Jeremy},
date = {2012}
}