@INPROCEEDINGS{AntoyHanusJostLibby19Declare,
author    = "Antoy, S. and Hanus, M. and Jost, A. and Libby, S.",
title     = "ICurry",
year      = "2020",
booktitle = "Declarative Programming and Knowledge Management - Conference
             on Declarative Programming ({DECLARE} 2019)",
doi       = {10.1007/978-3-030-46714-2\_18},
pages     = {286-307},
publisher = {Springer LNCS 12057},
abstract = {
FlatCurry is a well-established intermediate representation of
Curry programs used in compilers that translate Curry code into
Prolog or Haskell code.  Some FlatCurry constructs have no direct
translation into imperative code. These constructs must be each
handled differently when translating Curry code into, e.g., C,
C++ or Python code.  We introduce a new representation of
Curry programs, called ICurry, and derive a translation from all
FlatCurry constructs into ICurry.  We present the syntax and
semantics of ICurry and the translation from FlatCurry to ICurry.
We present a model of functional logic computations as graph
rewriting and show how this model can be implemented with ICurry
in a low-level imperative language.
}
}
