@ARTICLE{HanusTeegen19CoRR,
author    = "Hanus, M. and Teegen, F.",
title     = "Adding Data to Curry",
year      = "2019",
booktitle = "Pre-Proceedings of the 27th International Workshop on Functional
             and Logic Programming (WFLP 2019)",
journal   = {CoRR},
volume    = {abs/1908.10607},
abstract = {
Functional logic languages can solve equations over user-defined data
and functions.  Thus, the definition of an appropriate meaning of
equality has a long history in these languages, ranging from reflexive
equality in early equational logic languages to strict equality in
contemporary functional logic languages like Curry.  With the
introduction of type classes, where the equality operation "==" is
overloaded and user-defined, the meaning became more complex.
Moreover, logic variables appearing in equations require a different
typing than pattern variables, since the latter might be instantiated
with functional values or non-terminating operations.  In this paper,
we present a solution to these problems by introducing a new type
class "Data" which is associated with specific algebraic data
types, logic variables, and strict equality.  We discuss the ideas of
this class and its implications on various concepts of Curry, like
unification, functional patterns, and program optimization.
}
}
