Published online by Cambridge University Press: 02 July 2019
This paper presents PFLP, a library for probabilistic programming in the functional logic programming language Curry. It demonstrates how the concepts of a functional logic programming language support the implementation of a library for probabilistic programming. In fact, the paradigms of functional logic and probabilistic programming are closely connected. That is, language characteristics from one area exist in the other and vice versa. For example, the concepts of non-deterministic choice and call-time choice as known from functional logic programming are related to and coincide with stochastic memoization and probabilistic choice in probabilistic programming, respectively. We will further see that an implementation based on the concepts of functional logic programming can have benefits with respect to performance compared to a standard list-based implementation and can even compete with full-blown probabilistic programming languages, which we illustrate by several benchmarks.
This is an extended version of a paper presented at the International Symposium on Practical Aspects of Declarative Languages (PADL 2018), invited as a rapid communication in TPLP. The authors acknowledge the assistance of the conference program chairs Nicola Leone and Kevin Hamlen. We are thankful for fruitful discussions with Michael Hanus as well as suggestions of Jan Bracker and Falco Nogatz. Finally, we are thankful for the comments of the anonymous reviewers to improve the readability of this paper.