How to replace failure by a list of successes
Proc. of a conference on Functional programming languages and computer architecture
Journal of Logic Programming
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An operational semantics of lazy evaluation for analysis
An operational semantics of lazy evaluation for analysis
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Building domain-specific embedded languages
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Lava: hardware design in Haskell
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Deriving backtracking monad transformers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Functional Logic Design Patterns
FLOPS '02 Proceedings of the 6th International Symposium on Functional and Logic Programming
Combinators for breadth-first search
Journal of Functional Programming
Modular lazy search for Constraint Satisfaction Problems
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
More haste, less speed: lazy versus eager evaluation
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
Implementing functional logic languages using multiple threads and stores
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Backtracking, interleaving, and terminating monad transformers: (functional pearl)
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Programming monads operationally with Unimo
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Infinite sets that admit fast exhaustive search
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
Systematic generation of glass-box test cases for functional logic programs
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
A simple rewrite notion for call-time choice semantics
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
A functional-logic library for wired
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Smallcheck and lazy smallcheck: automatic exhaustive testing for small values
Proceedings of the first ACM SIGPLAN symposium on Haskell
Lazy evaluation and delimited control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Operational semantics for declarative multi-paradigm languages
Journal of Symbolic Computation
Rewriting and call-time choice: the HO case
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Effective Bayesian inference for stochastic programs
AAAI'97/IAAI'97 Proceedings of the fourteenth national conference on artificial intelligence and ninth conference on Innovative applications of artificial intelligence
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Programming with singular and plural non-deterministic functions
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Free theorems for functional logic programs
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
Test generation through programming in UDITA
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Stepwise evaluation of attribute grammars
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Transforming functional logic programs into monadic functional programs
WFLP'10 Proceedings of the 19th international conference on Functional and constraint logic programming
KiCS2: a new compiler from Curry to Haskell
WFLP'11 Proceedings of the 20th international conference on Functional and constraint logic programming
Automatic proof and disproof in Isabelle/HOL
FroCoS'11 Proceedings of the 8th international conference on Frontiers of combining systems
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Side-effect localization for lazy, purely functional languages via aspects
Higher-Order and Symbolic Computation
Typed tagless final interpreters
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
What are the Odds?: probabilistic programming in Scala
Proceedings of the 4th Workshop on Scala
Hi-index | 0.00 |
Functional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (non-strict evaluation with sharing of the results) with non-determinism. Yet these benefits are seldom enjoyed in functional programming, because the existing features for non-strictness, sharing, and non-determinism in functional languages are tricky to combine. We present a practical way to write purely functional lazy non-deterministic programs that are efficient and perspicuous. We achieve this goal by embedding the programs into existing languages (such as Haskell, SML, and OCaml) with high-quality implementations, by making choices lazily and representing data with non-deterministic components, by working with custom monadic data types and search strategies, and by providing equational laws for the programmer to reason about their code.