• Corpus ID: 59802940

# Functional Pearls: A Poor Man's Concurrency Monad

@article{Claessen1999FunctionalPA,
title={Functional Pearls: A Poor Man's Concurrency Monad},
author={Koen Claessen},
journal={Journal of Functional Programming},
year={1999}
}
• K. Claessen
• Published 1999
• Computer Science
• Journal of Functional Programming
Without adding any primitives to the language, we deene a concurrency monad transformer in Haskell. This allows us to add a limited form of concurrency to any existing monad. The atomic actions of the new monad are lifted actions of the underlying monad. Some extra operations, such as fork , to initiate new processes, are provided. We discuss the implementation, and use some examples to illustrate the usefulness of this construction .
7 Citations
Natural Transformations as Rewrite Rules and Monad Composition
• D. Kozen
• Mathematics, Computer Science
Log. Methods Comput. Sci.
• 2019
It is shown that a given tuple $(T,\mu,\eta)$ is a monad if and only if $T$ is a terminal object in a certain category of strings and rewrite rules, and that this fact can be established by proving confluence of the rewrite system.
Functional and imperative reactive programming based on a generalization of the continuation monad in the C++ programming language
This dissertation contains the important parts of the implementation of the AsynQt library which extends the Qt library, and its concurrency primitive – QFuture class – with functional reactive programming patterns based on the method proposed in this dissertation.
A continuation‐based task programming model for C++: design of the Causeway library
This paper introduces explicit programming language support for asynchronous programming that completely hides inversion of control, and shows that the programs written using this approach are easier to understand by programmers.
Functional EDSLs for Web Applications
In this framework, applications with an arbitrary number of components are written, compiled and type-checked as a single program, guaranteeing that the application as a whole, including network communication, is type-safe.
A seamless, client-centric programming model for type safe web applications
• Computer Science
• 2014
The aim is to improve the painful and error-prone experience of today's standard development methods, in which clients and servers are coded in different languages and communicate with each other using ad-hoc protocols.
Pluralize: a Trustworthy Framework for High-Level Smart Contract-Draft
• Computer Science, Mathematics
ArXiv
• 2018
The paper presents Pluralize a formal logical framework able to extend the execution of blockchain transactions to events coming from external oracles, like external time, sensor data, human-made
2 3 O ct 2 01 8 Pluralize : a Trustworthy Framework for High-Level Smart Contract-Draft Zaynah Dargaye
• 2018

## References

SHOWING 1-10 OF 12 REFERENCES
The use of monads to structure functional programs is described and three case studies are looked at in detail how monads ease the modi cation of a simple evaluator,How monads act as the basis of a datatype of arrays subject to in place update and how monad can be used to build parsers.
• Computer Science
POPL '95
• 1995
A fully modular interpreter based on monad transformers that incudes features missing from Steele's, Espinosa's, and Wadler's earlier efforts is designed and implemented in Gofer, whose constructor classes provide just the added power over Haskell's type classes to allow precise and convenient expression of the ideas.
Implicit and Explicit Parallel Programming in Haskell
• Computer Science
• 1993
A simple extension to the Haskell I/O monad that allows a form of explicit high-level concurrency and enhances the use of Haskell as an executable specification language, since some programs are most naturally described as a composition of parallel processes.
Type classes: an exploration of the design space
• Mathematics
• 1997
The rationale behind the design of Haskell's class system is reviewed, some of the weaknesses in the current situation are identified, and the choices that are faced in attempting to remove them are explained.
Concurrent Haskell. Proceedings of the 23rd POPL '96
• Concurrent Haskell. Proceedings of the 23rd POPL '96
• 1996