Effectful Programming in Declarative Languages with an Emphasis on Non-Determinism: Applications and Formal Reasoning
Sandra Dylus

TL;DR
This thesis explores effectful declarative programming with non-determinism, demonstrating applications in sorting and probabilistic programming, and proposes formal reasoning methods for modeling effects like non-determinism in Curry.
Contribution
It introduces novel applications leveraging non-determinism in Curry and develops a formal framework for reasoning about effects such as non-determinism and partiality.
Findings
Non-determinism combined with non-strictness offers advantages over list-based models.
A permutation enumeration function can be derived from non-deterministic sorting.
Modeling non-determinism as an effect enables formal reasoning about effectful declarative programs.
Abstract
This thesis investigates effectful declarative programming with an emphasis on non-determinism as an effect. On the one hand, we are interested in developing applications using non-determinism as underlying implementation idea. We discuss two applications using the functional logic programming language Curry. The key idea of these implementations is to exploit the interplay of non-determinism and non-strictness that Curry employs. The first application investigates sorting algorithms parametrised over a comparison function. By applying a non-deterministic predicate to these sorting functions, we gain a permutation enumeration function. We compare the implementation in Curry with an implementation in Haskell that uses a monadic interface to model non-determinism. The other application that we discuss in this work is a library for probabilistic programming. Instead of modelling…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, Reasoning, and Knowledge · Bayesian Modeling and Causal Inference · Logic, programming, and type systems
