LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Template meta-programming for Haskell
ACM SIGPLAN Notices
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Achieving Information Flow Security through Precise Control of Effects
CSFW '05 Proceedings of the 18th IEEE workshop on Computer Security Foundations
Making monads first-class with template haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
Parameterised notions of computation
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Monads, zippers and views: virtualizing the monad stack
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Guiding parallel array fusion with indexed types
Proceedings of the 2012 Haskell Symposium
Hi-index | 0.00 |
Monads provide a greatly useful capability to pure languages in simulating side-effects, but implementations such as the Monad Transformer Library [1] in Haskell prohibit reuse of those side-effects such as threading through two different states without some explicit workaround. Monad Factory provides a straightforward solution for opening the non-proper morphisms by indexing monads at both the type-level and term-level, allowing 'copies' of the monads to be created and simultaneously used within even the same monadic transformer stack. This expands monads' applicability and mitigates the amount of boilerplate code we need for monads to work together, and yet we use them nearly identically to non-indexed monads.