Polymonads were recently introduced by Hicks et al. as a unified approach to programming with different notions of monads. Their work was mainly focussed on foundational aspects of the approach. In this article, we show how to incorporate the notion of polymonads into Haskell, which is the first time this has been done in a full-scale language. In particular, we show how polymonads can be represented in Haskell, give a justification of the representation through proofs in Agda, and provide a plugin for the Glasgow Haskell Compiler (GHC) that enables their use in practice. Finally, we demonstrate the utility of our system by means of examples concerned with session types and the parameterized effect monad. This work provides a common represe...
AbstractThe idea of polytypic programming is to write programs that are defined by induction on the ...
AbstractMonads have become very popular for structuring functional programs since Wadler introduced ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Several popular generalizations of monads have been implemented in Haskell. Unfortunately, because t...
Monads are a popular tool for the working functional programmer to structure effectful computations....
Monads are a popular tool for the working functional programmer to structure effectful computations....
Monads are a popular tool for the working functional programmer to structure effectful computations....
Several popular generalizations of monads have been implemented in Haskell. Unfortunately, because t...
Monads and applicative functors are staple design patterns to handle effects in pure functional prog...
Monads and applicative functors are staple design patterns to handle effects in pure functional prog...
In Haskell, there are many data types that would form monads were it not for the presence of type-cl...
A polytypic program is a program that behaves uniformly over a large class of datatypes. For functio...
It is well-known that very simple theoretic constructs such as Either (type-theoretic equivalent of ...
Many functions have to be written over and over again for different datatypes, either because dataty...
Type systems with parametric polymorphism can encode a significant pro- portion of the information c...
AbstractThe idea of polytypic programming is to write programs that are defined by induction on the ...
AbstractMonads have become very popular for structuring functional programs since Wadler introduced ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Several popular generalizations of monads have been implemented in Haskell. Unfortunately, because t...
Monads are a popular tool for the working functional programmer to structure effectful computations....
Monads are a popular tool for the working functional programmer to structure effectful computations....
Monads are a popular tool for the working functional programmer to structure effectful computations....
Several popular generalizations of monads have been implemented in Haskell. Unfortunately, because t...
Monads and applicative functors are staple design patterns to handle effects in pure functional prog...
Monads and applicative functors are staple design patterns to handle effects in pure functional prog...
In Haskell, there are many data types that would form monads were it not for the presence of type-cl...
A polytypic program is a program that behaves uniformly over a large class of datatypes. For functio...
It is well-known that very simple theoretic constructs such as Either (type-theoretic equivalent of ...
Many functions have to be written over and over again for different datatypes, either because dataty...
Type systems with parametric polymorphism can encode a significant pro- portion of the information c...
AbstractThe idea of polytypic programming is to write programs that are defined by induction on the ...
AbstractMonads have become very popular for structuring functional programs since Wadler introduced ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...