Adding Data to Curry [article]

Michael Hanus, Finn Teegen
<span title="2019-08-28">2019</span> <i > arXiv </i> &nbsp; <span class="release-stage" >pre-print</span>
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
more &raquo; ... n 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.
<span class="external-identifiers"> <a target="_blank" rel="external noopener" href="https://arxiv.org/abs/1908.10607v1">arXiv:1908.10607v1</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/vubjepbn2ba37owpqffzzqzgbi">fatcat:vubjepbn2ba37owpqffzzqzgbi</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20200917182428/https://arxiv.org/pdf/1908.10607v1.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/f5/35/f5351f9f2ed81f6b690311d8b29683305ea4c0ff.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener" href="https://arxiv.org/abs/1908.10607v1" title="arxiv.org access"> <button class="ui compact blue labeled icon button serp-button"> <i class="file alternate outline icon"></i> arxiv.org </button> </a>