@INPROCEEDINGS{HanusSadre99JFLP,
author = "Hanus, M. and Sadre, R.",
title = "An Abstract Machine for Curry and its Concurrent Implementation in Java",
journal = "Journal of Functional and Logic Programming",
number = "6",
publisher = "MIT Press",
year = "1999",
abstract = {
Curry is a multi-paradigm declarative language aiming to amalgamate
functional, logic, and concurrent programming paradigms.
Curry combines in a seamless way features from functional programming
and (concurrent) logic programming.
Curry's operational semantics is based on the combination of
lazy reduction of expressions together
with a possibly non-deterministic binding of free variables
occurring in expressions. Moreover, (equational) constraints
can be executed concurrently which provides for passive constraints
and concurrent computation threads that are synchronized
on logical variables. This paper describes in an object-oriented style
an abstract machine for executing Curry programs.
The machine is designed to provide a link for compiling Curry programs
into Java but it can also be a basis for implementations of Curry in
other (object-oriented) languages.
The main emphasis of the Java-based implementation is the exploitation
of Java threads to implement the concurrent and
non-deterministic features of Curry.}
}

