Results 1 
4 of
4
Retrieving ReUsable Software Components By Polymorphic Type
, 1991
"... Polymorphic types are labels classifying both (a) defined components in a library and (b) contexts of free variables in partially written programs. We propose to help programmers make better use of software libraries by providing a system that, given (b), identifies candidates from (a) with matching ..."
Abstract

Cited by 31 (2 self)
 Add to MetaCart
Polymorphic types are labels classifying both (a) defined components in a library and (b) contexts of free variables in partially written programs. We propose to help programmers make better use of software libraries by providing a system that, given (b), identifies candidates from (a) with matching types. Assuming at first that matching means unifying (ie having a common instance) we discuss efficient ways of implementing such a retrieval system, and also indicate its likely effectiveness based on a quantitative study of currently available libraries. Later we introduce the applicative instance relation between types, which captures some intuitions about generalisation/specialisation, and discuss its use as the basis of a more flexible system. 1. INTRODUCTION Much programming effort can be saved by making good use of libraries of predefined components. In a functional language the majority of such components are functions and many of them are higher order functions, extensive use o...
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
I Equational Programming: A Unifying Approach to Logic and Functional Programming
, 1985
"... Functional and logic languages have many similarities, but there are significant differences between them that the integration of functional and logic languages is a challenging problem. The approach presented in this paper is called equational programming. We show that equations can be used to defi ..."
Abstract
 Add to MetaCart
Functional and logic languages have many similarities, but there are significant differences between them that the integration of functional and logic languages is a challenging problem. The approach presented in this paper is called equational programming. We show that equations can be used to define many features of functional languages, such as abbreviations, patterns, set abstraction and infinite objects, as well as those of logic languages, such as the ability to invert functions, unify terms, and compute with logical variables and partiallydefined values. A language called EqL is described that embodies this equational approach. The formal semantics of equations is given in terms of the complete set of solutions and the operational semantics is given in terms of two sets of reduction rules:treductions and ~reductions. We refer to the latter form of reduction as obiect refinement. Equations are solved by gradually refining the values bound to the variables of the equation. This approach is amenable to parallel execution and also offers advantages in comparison to related techniques such as narrowing. 1 I.
LOGIC PROGRAMMING cum APPLICATIVE PROGRAMMING* ABSTRACT
"... Conditional (directed) equations provid' ~ a paradigm of computation that combines the cl(',, ~ svntax and semantics of both PROLOGlike logic p'rogra~ming and (firstorder) LIsPlike applicative (functional) programming in a uniform manner. For applicative programming, equations are used as conditi ..."
Abstract
 Add to MetaCart
Conditional (directed) equations provid' ~ a paradigm of computation that combines the cl(',, ~ svntax and semantics of both PROLOGlike logic p'rogra~ming and (firstorder) LIsPlike applicative (functional) programming in a uniform manner. For applicative programming, equations are used as conditional rewrite rules; for logic programming, the same equations are employed for "conditional narrowing". Increased expressive power is obtainable by combining both paradigms in one program. 1.