Algebraic Logic Functional programming language

Algebraic Logic Functional programming language

Algebraic Logic Functional programming language also known as ALF is a programming language which combines functional and logic programming techniques. Its foundation is Horn clause logic with equality which consists of predicates and Horn clauses for logic programming, and functions and equations for functional programming.

ALF was designed to be genuine integration of both programming paradigms, and thus any functional expression can be used in a goal literal and arbitrary predicates can occur in conditions of equations. ALF's operational semantics is based on the resolution rule to solve literals and narrowing to evaluate functional expressions. In order to reduce the number of possible narrowing steps, a leftmost-innermost basic narrowing strategy is used which, it is claimed, can be efficiently implemented. Terms are simplified by rewriting before a narrowing step is applied and equations are rejected if the two sides have different constructors at the top. Rewriting and rejection are supposed to result in a large reduction of the search tree and produce an operational semantics that is more efficient than Prolog's resolution strategy. Similarly to Prolog, ALF uses a backtracking strategy corresponding to a depth-first search in the derivation tree.

The ALF system was designed to be an efficient implementation of the combination of resolution, narrowing, rewriting, and rejection. ALF programs are compiled into instructions of an abstract machine. The abstract machine is based on the Warren Abstract Machine (WAM) with several extensions to implement narrowing and rewriting. In the current ALF implementation programs of this abstract machine are executed by an emulator written in C.

In the Carnegie Mellon University Artificial Intelligence Repository, cite web|url=http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/0.html |title=CMU Artificial Intelligence Repository |accessdate=2007-06-22 |date=1995-02-13 |work=CMU Artificial Intelligence Repository |publisher=Carnegie Mellon University ] ALF is included as an AI programming language, in particular as a functional/logic programming language Prolog implementation. cite web|url=http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/prolog/impl/fp_lp/alf/0.html |title=ALF: Algebraic Logic Functional programming language |accessdate=2007-06-22 |date=1995-02-13 |work=CMU Artificial Intelligence Repository |publisher=Carnegie Mellon University ] A user manual cite web|url=http://www.informatik.uni-kiel.de/~mh/systems/ALF/manual.pdf |title=ALF User's Manual |accessdate=2007-06-22 |last=Hanus |first=Michael |coauthors=Andreas Schwab |date=1995-02-13 |work=ALF User's Manual |publisher=Institut für Informatik, Christian-Albrechts-Universität zu Kiel ] describing the language and the use of the system is available. The ALF System cite web|url=http://www.informatik.uni-kiel.de/~mh/systems/ALF.html |title=The ALF System |accessdate=2007-06-22 |last=Hanus |first=Michael |work=The ALF System |publisher=Institut für Informatik, Christian-Albrechts-Universität zu Kiel ] runs under Unix and is free.

References

External links

* [http://www.informatik.uni-kiel.de/~mh/publications/papers/ Publications of Michael Hanus] , including many articles relevant to the design and theory of ALF
* [http://www.informatik.uni-kiel.de/~mh/systems/ALF/README Information about getting and installing the ALF system]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • Epigram (programming language) — Epigram is the name of a functional programming language with dependent types and of the IDE usually packaged with it. Epigram s type system is strong enough to express program specifications. The goal is to support a smooth transition from… …   Wikipedia

  • Haskell (programming language) — Haskell Paradigm(s) functional, lazy/non strict, modular Appeared in 1990 Designed by Simon Peyton Jones, Lennart Aug …   Wikipedia

  • Concatenative programming language — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurr …   Wikipedia

  • Curry (programming language) — This article is about the programming language Curry. For the computer science technique, see Currying. Curry Paradigm(s) functional, logic, non strict, modular Designed by Michael Hanus, et al. Typing discipline static, strong, inferred …   Wikipedia

  • Racket (programming language) — Racket Paradigm(s) Multi paradigm: Functional, Procedural, Modular, Object oriented, Reflective, Meta Appeared in 1994 Developer …   Wikipedia

  • List of functional programming topics — This is a list of functional programming topics. Contents 1 Foundational concepts 2 Lambda calculus 3 Combinatory logic 4 Intuitionistic logic …   Wikipedia

  • computer programming language — Introduction       any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer specific numerical form known as machine… …   Universalium

  • Value-level programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computin …   Wikipedia

  • Function-level programming — In computer science, function level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value level programming.In his 1977 Turing award …   Wikipedia

  • Quantum programming — is a set of computer programming languages that allow the expression of quantum algorithms using high level constructs. The point of quantum languages is not so much to provide a tool for programmers, but to provide tools for researchers to… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”