Results 1  10
of
23
A Refinement Algebra for ObjectOriented 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 objectoriented features of the language. We show that this set of laws is complete in the sense that ..."
Abstract

Cited by 20 (4 self)
 Add to MetaCart
(Show Context)
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 objectoriented 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 STmonad. 1 Introduction O ..."
Abstract

Cited by 19 (0 self)
 Add to MetaCart
(Show Context)
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 STmonad. 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 wellknown 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 ...
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 17 (4 self)
 Add to MetaCart
(Show Context)
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
Relating Models of Backtracking
 IN PROC. 9TH INT. CONF. ON FUNCTIONAL PROGRAMMING
, 2004
"... Past attempts to relate two wellknown models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higherorder values and in nite computations. We also provide an operational semantics, and we prove it adequate for both ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
Past attempts to relate two wellknown models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higherorder values and in nite computations. We also provide an operational semantics, and we prove it adequate for both models.
Functional Quantum Programming
 In Proceedings of the 2nd Asian Workshop on Programming Languages and Systems
, 2001
"... It has been shown that nondeterminism, 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 nondeterministic programming where negative probabilities are allowed. ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
(Show Context)
It has been shown that nondeterminism, 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 nondeterministic programming where negative probabilities are allowed.
Combinators for BreadthFirst 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 ^
A Monadic Semantics for Core Curry
, 2003
"... We give a deterministic, bigstep operational semantics for the essential core of the Curry language, including higherorder functions, callbyneed 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 10 (2 self)
 Add to MetaCart
We give a deterministic, bigstep operational semantics for the essential core of the Curry language, including higherorder functions, callbyneed 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, nondeterminism, and resumptionbased concurrency.
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
(Show Context)
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.
Continuations for Parallel Logic Programming
 In Proc. of 2nd International ACMSIGPLAN 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 con ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
(Show Context)
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.