We introduce a new lambda calculus with futures, Lambda(fut), that models the operational semantics of concurrent statically typed functional programming languages with mixed eager and lazy threads such as Alice ML, a concurrent extension of Standard ML. Lambda(fut) is a minimalist extension of the call-by-value lambda-calculus that is sufficiently expressive to define and combine a variety of standard concurrency abstractions, such as channels, semaphores, and ports. Despite its minimality, the basic machinery of Lambda(fut) is sufficiently powerful to support explicit recursion and call-by-need evaluation. We present a static type system for Lambda(fut) and distinguish a fragment of Lambda(fut) that we prove to be uniformly confluent. This result confirms our intuition that reference cells are the sole source of indeterminism.
M. Phillips, J. Nguyen, and A. Mischke. Advances in Speech Recognition: Mobile Environments, Call Centers and Clinics, chapter 3, Springer, New York, (2010)
R. Neßelrath, and J. Alexandersson. Proceedings of the 6th IJCAI Workshop on Knowledge and Reasoning in Practical Dialogue Systems, Pasadena, CA, USA, page 46-51. (2009)
P. Wu, Y. Lee, H. Tseng, H. Ho, M. Yang, and S. Chien. 2017 IEEE International Symposium on Mixed and Augmented Reality (ISMAR-Adjunct), page 186-191. IEEE Computer Society, (2017)