Results 1 
6 of
6
The Kiel Curry System KiCS
 In Applications of Declarative Programming and Knowledge Management
, 2009
"... Abstract. This paper presents the Kiel Curry System (KiCS) for the lazy functional logic language Curry. Its main features beyond other Curry implementations are: flexible search control by means of search trees, referentially transparent encapsulation and sharing across nondeterminism. 1 ..."
Abstract

Cited by 14 (3 self)
 Add to MetaCart
(Show Context)
Abstract. This paper presents the Kiel Curry System (KiCS) for the lazy functional logic language Curry. Its main features beyond other Curry implementations are: flexible search control by means of search trees, referentially transparent encapsulation and sharing across nondeterminism. 1
Compiling a functional logic language: The basic scheme
 In Proceedings of the Eleventh International Symposium on Functional and Logic Programming
, 2012
"... Abstract. We present the design of a compiler for a functional logic programming language and discuss the compiler’s implementation. The source program is abstracted by a constructor based graph rewriting system obtained from a functional logic program after syntax desugaring, lambda lifting and sim ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
(Show Context)
Abstract. We present the design of a compiler for a functional logic programming language and discuss the compiler’s implementation. The source program is abstracted by a constructor based graph rewriting system obtained from a functional logic program after syntax desugaring, lambda lifting and similar transformations provided by a compiler’s frontend. This system is nondeterministic and requires a specialized normalization strategy. The target program consists of 3 procedures that execute graph replacements originating from either rewrite or pulltab steps. These procedures are deterministic and easy to encode in an ordinary programming language. We describe the generation of the 3 procedures, discuss the correctness of our approach, highlight some key elements of an implementation, and benchmark the performance of a proofofconcept. Our compilation scheme is elegant and simple enough to be presented in one page. 1
Programming with Narrowing: a Tutorial
"... Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory and foundation of narrowing, but little is published on the use of narrowing in programming. This paper introduces narrowing from a programmer ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory and foundation of narrowing, but little is published on the use of narrowing in programming. This paper introduces narrowing from a programmer viewpoint; shows, by means of examples, when, why and how to use narrowing in a program; and discusses the impact of narrowing on software development activities such as design and maintenance. The examples are coded in the programming language Curry, which provides narrowing as a first class feature. 1.
another Peano Number. data Peano = Zero  Succ Peano
"... Callbyname is known to be an optimal evaluation strategy with respect to termination. In practice you can only benefit from this result if functions are not unnecessarily strict. Often it is not trivial to implement a function in a least strict way. In the following we use the lazy functional prog ..."
Abstract
 Add to MetaCart
(Show Context)
Callbyname is known to be an optimal evaluation strategy with respect to termination. In practice you can only benefit from this result if functions are not unnecessarily strict. Often it is not trivial to implement a function in a least strict way. In the following we use the lazy functional programming language Haskell. Consider a data type for Peano Numbers. A Peano Number is either zero or the successor of
Pure, Declarative, and Constructive Arithmetic Relations (Declarative Pearl) ⋆
"... Abstract. We present decidable logic programs for addition, multiplication, division with remainder, exponentiation, and logarithm with remainder over the unbounded domain of natural numbers. Our predicates represent relations without mode restrictions or annotations. They are fully decidable under ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. We present decidable logic programs for addition, multiplication, division with remainder, exponentiation, and logarithm with remainder over the unbounded domain of natural numbers. Our predicates represent relations without mode restrictions or annotations. They are fully decidable under the common, DFSlike, SLD resolution strategy of Prolog or under an interleaving refinement of DFS. We prove that the evaluation of our arithmetic goals always terminates, given arguments that share no logic variables. Further, the (possibly infinite) set of solutions for a goal denotes exactly the corresponding mathematical relation. (For SLD without interleaving, and for some infinite solution sets, only half of the relation’s domain may be covered.) We define predicates to handle unary (for illustration) and binary representations of natural numbers, and prove termination and completeness of these predicates. Our predicates are written in pure Prolog, without cut (!), var/1, or other nonlogical operators. The purity and minimalism of our approach allows us to declare arithmetic in other logic systems, such as Haskell type classes. 1