LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Deriving backtracking monad transformers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Semantics and expressive power of nondeterministic constructs in deductive databases
Journal of Computer and System Sciences
Continuation Semantics for PROLOG with Cut
TAPSOFT '89/CAAP '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 1: Advanced Seminar on Foundations of Innovative Software Development I and Colloquium on Trees in Algebra and Programming
A type-theoretic foundation of continuations and prompts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
On the static and dynamic extents of delimited continuations
Science of Computer Programming
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Inductive reasoning about effectful data types
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A functional-logic library for wired
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
A static simulation of dynamic delimited control
Higher-Order and Symbolic Computation
Lazy evaluation and delimited control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
α lean TAP: A Declarative Theorem Prover for First-Order Classical Logic
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Journal of Functional Programming
Algebras for combinatorial search
Journal of Functional Programming
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Context-based proofs of termination for typed delimited-control operators
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Monadic constraint programming
Journal of Functional Programming
A substructural type system for delimited continuations
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Delimited continuations in operating systems
CONTEXT'07 Proceedings of the 6th international and interdisciplinary conference on Modeling and using context
Pure, declarative, and constructive arithmetic relations (declarative pearl)
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Kleene monads: handling iteration in a framework of generic effects
CALCO'09 Proceedings of the 3rd international conference on Algebra and coalgebra in computer science
Concurrent orchestration in Haskell
Proceedings of the third ACM Haskell symposium on Haskell
Extensional higher-order logic programming
JELIA'10 Proceedings of the 12th European conference on Logics in artificial intelligence
Stepwise evaluation of attribute grammars
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Soutei, a logic-based trust-management system
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Purely functional lazy nondeterministic programming
Journal of Functional Programming - Dedicated to ICFP 2009
Bimonadic semantics for basic pattern matching calculi
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Algebras for combinatorial search
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Typed syntactic meta-programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
An operational foundation for the tactic language of Coq
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.01 |
We design and implement a library for adding backtracking computations to any Haskell monad. Inspired by logic programming, our library provides, in addition to the operations required by the MonadPlus interface, constructs for fair disjunctions, fair conjunctions, conditionals, pruning, and an expressive top-level interface. Implementing these additional constructs is easy in models of backtracking based on streams, but not known to be possible in continuation-based models. We show that all these additional constructs can be generically and monadically realized using a single primitive msplit. We present two implementations of the library: one using success and failure continuations; and the other using control operators for manipulating delimited continuations.