354 research outputs found
Computer architectures for functional and logic languages
PhD ThesisIn recent years interest in functional and logic languages has
grown considerably. Both classes of language offer advantages for programming
and have an influential group of people promoting them. As yet
no consensus has formed as to which class is best, and such a consensus
may never form. Future general-purpose computer architectures may well
be required to support both classes of language efficiently. Novel
architectures designed to support both classes of languages could even
add impetus to the area of hybrid functional/logic languages.
Treleaven et al[68] have proposed a classification of computational
mechanisms which they believe underly several types of novel computer
architecture (i.e. control flow, data flow and reduction). The classification
partitions novel general-purpose architectures into the following
classes: control driven - where a statement is executed when it is
selected by flow(s) of control, data driven - where a statement is executed
when some combination of its arguments are available, and demand
driven - where a statement is executed when the result it produces is
needed by another, already active instruction.
This thesis investigates the efficient support of both functional
and logic languages using an architecture that attempts to be general
purpose by embodying all the mechanisms that underly the above classification.
A novel packet communication architecture is presented which intergrates
the control driven, data driven and demand driven computational
mechanisms. A software emulator for the machine was used as the basis
for separate implementations of functional and logic languages, which
were in turn used to evaluate the effectiveness of the computational
mechanisms described in the classification. These mechanisms allowed
functional languages to be implemented wi th ease, but caused severe
problems when used to support logic languages. The difficulties with
these mechanisms are taken as signifying that they do not provide adequate
support for logic languages. The problems encountered led to the
development of a novel implementation technique for logic languages,
which also proved to be a good basis for a combined functional and logic
model. This model is believed to provide a sound foundation for a
parallel computer system that would support functional and logic
languages with equal elegance and efficiency, and would therefore also
support hybrid languages. The design for such a computer is described
at the end of this thesis.the Science and Engineering Research Council, Great Britain
SASLOG : Lazy Evaluation Meets Backtracking
We describe a combined functional / logic programming language SASLOG which contains Turner’s SASL, a fully lazy, higher-order functional language, and pure Prolog as subsets. Our integration is symmetric, i.e. functional terms can appear in the logic part of the program and v.v. Exploiting the natural correspondence between backtracking and lazy streams yields an elegant solution to the problem of transferring alternative variable bindings to the calling functional part of the program.
We replace the rewriting approach to function evaluation by combinator graph reduction, thereby regaining computational efficiency and the structure sharing properties. Our solution is equally well suited to a fixed combinator set and to a super combinator implementation. In the paper we use Turner's fixed combinator set
Typed Generic Traversal With Term Rewriting Strategies
A typed model of strategic term rewriting is developed. The key innovation is
that generic traversal is covered. To this end, we define a typed rewriting
calculus S'_{gamma}. The calculus employs a many-sorted type system extended by
designated generic strategy types gamma. We consider two generic strategy
types, namely the types of type-preserving and type-unifying strategies.
S'_{gamma} offers traversal combinators to construct traversals or schemes
thereof from many-sorted and generic strategies. The traversal combinators
model different forms of one-step traversal, that is, they process the
immediate subterms of a given term without anticipating any scheme of recursion
into terms. To inhabit generic types, we need to add a fundamental combinator
to lift a many-sorted strategy to a generic type gamma. This step is called
strategy extension. The semantics of the corresponding combinator states that s
is only applied if the type of the term at hand fits, otherwise the extended
strategy fails. This approach dictates that the semantics of strategy
application must be type-dependent to a certain extent. Typed strategic term
rewriting with coverage of generic term traversal is a simple but expressive
model of generic programming. It has applications in program transformation and
program analysis.Comment: 85 pages, submitted for publication to the Journal of Logic and
Algebraic Programmin
Automated theorem proving in first-order logic modulo: on the difference between type theory and set theory
Resolution modulo is a first-order theorem proving method that can be applied
both to first-order presentations of simple type theory (also called
higher-order logic) and to set theory. When it is applied to some first-order
presentations of type theory, it simulates exactly higherorder resolution. In
this note, we compare how it behaves on type theory and on set theory
- …