Introduction to algorithms
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Notions of computation and monads
Information and Computation
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Lava: hardware design in Haskell
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
On embedding a microarchitectural design language within Haskell
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Implicit parameters: dynamic scoping with static types
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Science of Computer Programming - Special issue on mathematics of program construction
Parametricity and Unboxing with Unpointed Types
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Recursion from Cyclic Sharing: Traced Monoidal Categories and Models of Cyclic Lambda Calculi
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
Complete Axioms for Categorical Fixed-Point Operators
LICS '00 Proceedings of the 15th Annual IEEE Symposium on Logic in Computer Science
Microprocessor Specification in Hawk
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Recursive Monadic Bindings: Technical Development and Details
Recursive Monadic Bindings: Technical Development and Details
Macros as multi-stage computations: type-safe, generative, binding macros in MacroML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Techniques for embedding postfix languages in Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Axioms for Recursion in Call-by-Value
Higher-Order and Symbolic Computation
Cycle therapy: a prescription for fold and unfold on regular trees
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
A type system for well-founded recursion
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
wxHaskell: a portable and concise GUI library for haskell
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Comonadic Notions of Computation
Electronic Notes in Theoretical Computer Science (ENTCS)
A Library for Self-Adjusting Computation
Electronic Notes in Theoretical Computer Science (ENTCS)
Compilation of extended recursion in call-by-value functional languages
Higher-Order and Symbolic Computation
Mixin modules and computational effects
ICALP'03 Proceedings of the 30th international conference on Automata, languages and programming
Stepwise evaluation of attribute grammars
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
A coinductive calculus for asynchronous side-effecting processes
FCT'11 Proceedings of the 18th international conference on Fundamentals of computation theory
Just do it: simple monadic equational reasoning
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Hardware design with generalized arrows
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Fixing idioms: a recursion primitive for applicative DSLs
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
A coinductive calculus for asynchronous side-effecting processes
Information and Computation
Hi-index | 0.00 |
Monads have become a popular tool for dealing with computational effects in Haskell for two significant reasons: equational reasoning is retained even in the presence of effects; and program modularity is enhanced by hiding "plumbing" issues inside the monadic infrastructure. Unfortunately, not all the facilities provided by the underlying language are readily available for monadic computations. In particular, while recursive monadic computations can be defined directly using Haskell's built-in recursion capabilities, there is no natural way to express recursion over the values of monadic actions. Using examples, we illustrate why this is a problem, and we propose an extension to Haskell's donotation to remedy the situation. It turns out that the structure of monadic value-recursion depends on the structure of the underlying monad. We propose an axiomatization of the recursion operation and provide a catalogue of definitions that satisfy our criteria.