@INPROCEEDINGS{BoehmHanusTeegen21PPDP,
author    = "B{\"o}hm, J. and Hanus, M. and Teegen, F.",
title     = "From Non-determinism to Goroutines: A Fair Implementation of Curry in Go",
year      = "2021",
publisher = "ACM Press",
pages     = {16:1-16:15},
booktitle = "Proc.\ of the 23rd International Symposium on
             Principle and Practice of Declarative Programming (PPDP 2021)"
abstract = {
The declarative programming language Curry
amalgamates demand-driven evaluation from functional programming
with non-determinism from logic programming.
In contrast to Prolog, the search strategy for non-deterministic computations
is not fixed so that complete or parallel strategies are
reasonable for Curry.
In particular, a desirable option is a fair strategy
which frees the programmer from considering the influence
of the search strategy to the success of a computation.
In this paper we describe an implementation with this property.
Based on recent developments on operational models for
functional logic programming,
we present a new implementation which transforms
Curry programs in several transformation steps into Go programs.
By exploiting lightweight threads in the form of goroutines,
we obtain a complete and fair implementation
which automatically uses multi-processing to speed up
non-deterministic computations.
This has the effect that, in some cases, non-deterministic
algorithms are more efficiently evaluated than deterministic ones.
}
}

