Results 1 - 10
of
16
Embedding prolog in haskell
- Department of Computer Science, University of Utrecht
, 1999
"... The distinctive merit of the declarative reading of logic programs is the validity ofallthelaws of reasoning supplied by the predicate calculus with equality. Surprisingly many of these laws are still valid for the procedural reading � they can therefore be used safely for algebraic manipulation, pr ..."
Abstract
-
Cited by 16 (4 self)
- Add to MetaCart
The distinctive merit of the declarative reading of logic programs is the validity ofallthelaws of reasoning supplied by the predicate calculus with equality. Surprisingly many of these laws are still valid for the procedural reading � they can therefore be used safely for algebraic manipulation, program transformation and optimisation of executable logic programs. This paper lists a number of common laws, and proves their validity for the standard (depth- rst search) procedural reading of Prolog. They also hold for alternative search strategies, e.g. breadth- rst search. Our proofs of the laws are based on the standard algebra of functional programming, after the strategies have been given a rather simple implementation in Haskell. 1
A Refinement Algebra for Object-Oriented Programming
, 2003
"... In this article we introduce a comprehensive set of algebraic laws for rool, a language similar to sequential Java but with a copy semantics. We present a few laws of commands, but focus on the object-oriented features of the language. We show that this set of laws is complete in the sense that ..."
Abstract
-
Cited by 16 (3 self)
- Add to MetaCart
In this article we introduce a comprehensive set of algebraic laws for rool, a language similar to sequential Java but with a copy semantics. We present a few laws of commands, but focus on the object-oriented features of the language. We show that this set of laws is complete in the sense that it is sufficient to reduce an arbitrary rool program to a normal form expressed in a restricted subset of the rool operators. We also
Typed Logical Variables in Haskell
- In Proceedings Haskell Workshop
, 2000
"... We describe how to embed a simple typed functional logic programming language in Haskell. The embedding is a natural extension of the Prolog embedding by Seres and Spivey [16]. To get full static typing we need to use the Haskell extensions of quantified types and the ST-monad. 1 Introduction O ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
We describe how to embed a simple typed functional logic programming language in Haskell. The embedding is a natural extension of the Prolog embedding by Seres and Spivey [16]. To get full static typing we need to use the Haskell extensions of quantified types and the ST-monad. 1 Introduction Over the last ten to twenty years, there have been many attempts to combine the flavours of logic and functional programming [3]. Among these, the most well-known ones are the programming languages Curry [4], Escher [13], and Mercury [14]. Curry and Escher can be seen as variations on Haskell, where logic programming features are added. Mercury can be seen as an improvement of Prolog, where types and functional programming features are added. All three are completely new and autonomous languages. Defining a new programming language has as a drawback for the developer to build a new compiler, and for the user to learn a new language. A different approach which has gained a lot of popularity ...
Combinators for Breadth-First Search
"... this article is devoted to nding a suitable denition for this operator, and verifying that it is associative, as it must be if we are to write expressions like test n ^ ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
this article is devoted to nding a suitable denition for this operator, and verifying that it is associative, as it must be if we are to write expressions like test n ^
Functional Quantum Programming
- In Proceedings of the 2nd Asian Workshop on Programming Languages and Systems
, 2001
"... It has been shown that non-determinism, both angelic and demonic, can be encoded in a functional language in di#erent representation of sets. In this paper we see quantum programming as a special kind of non-deterministic programming where negative probabilities are allowed. ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
It has been shown that non-determinism, both angelic and demonic, can be encoded in a functional language in di#erent representation of sets. In this paper we see quantum programming as a special kind of non-deterministic programming where negative probabilities are allowed.
A Monadic Semantics for Core Curry
, 2003
"... We give a deterministic, big-step operational semantics for the essential core of the Curry language, including higher-order functions, call-by-need evaluation, nondeterminism, narrowing, and residuation. The semantics is structured in modular monadic style, and is presented in the form of an execut ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
We give a deterministic, big-step operational semantics for the essential core of the Curry language, including higher-order functions, call-by-need evaluation, nondeterminism, narrowing, and residuation. The semantics is structured in modular monadic style, and is presented in the form of an executable interpreter written in Haskell. It uses monadic formulations of state, non-determinism, and resumptionbased concurrency.
Relating Models of Backtracking
- IN PROC. 9TH INT. CONF. ON FUNCTIONAL PROGRAMMING
, 2004
"... Past attempts to relate two well-known models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higher-order values and in nite computations. We also provide an operational semantics, and we prove it adequate for both ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Past attempts to relate two well-known models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higher-order values and in nite computations. We also provide an operational semantics, and we prove it adequate for both models.
Continuations for Parallel Logic Programming
- In Proc. of 2nd International ACM-SIGPLAN Conference on Principles and practice of Declarative Programming (PPDP’00
, 2000
"... This paper gives denotational models for three logic programming languages of progressive complexity, adopting the \logic programming without logic" approach. The rst language is the control ow kernel of sequential Prolog, featuring sequential composition and backtracking. A committedchoice concurre ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
This paper gives denotational models for three logic programming languages of progressive complexity, adopting the \logic programming without logic" approach. The rst language is the control ow kernel of sequential Prolog, featuring sequential composition and backtracking. A committedchoice concurrent logic language with parallel composition (parallel AND) and don't care nondeterminism is studied next. The third language is the core of Warren's basic Andorra model, combining parallel composition and don't care nondeterminism with two forms of don't know nondeterminism (interpreted as sequential and parallel OR) and favoring deterministic over nondeterministic computation. We show that continuations are a valuable tool in the analysis and design of semantic models for both sequential and parallel logic programming. Instead of using mathematical notation, we use the functional programming language Haskell as a metalanguage for our denotational semantics, and employ monads in order to facilitate the transition from one language under study to another. Keywords Parallel logic programming, basic Andorra model, denotational semantics, continuations, monads, Haskell. 1.
The Algebra of Searching
- PROCEEDINGS OF A SYMPOSIUM IN CELEBRATION OF THE WORK OF
, 1999
"... this paper, we seek to develop a logic for logic programs that takes into account this procedural aspect of their behaviour under dierent search strategies, emphasizing algebraic properties that are common to all search strategies. ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
this paper, we seek to develop a logic for logic programs that takes into account this procedural aspect of their behaviour under dierent search strategies, emphasizing algebraic properties that are common to all search strategies.

