Motivating the Integration of Functional and Logic Programming
Integration of Functional and Logic Programming
Goal: Add the advantages of both styles of programming.
Both are declarative:
They use mathematics and logic to give
a computer solution to a problem.
Functional Programming:
Polymorphic types
Higher Order
Lazy Evaluation
Logic Programming
Logical Variables
Unification
Backtracking
Deductive inference
Integrated Languages: Functional Logic Languages
Exploit more (implementable) facilities of logic:
Functions
Relations
Equality
Active area of research:
Several languages proposed (EQLOG,
Uniform, Fresh, Funlog, K-LEAF, BABEL, etc.)
Semantics (Operational and declarative)
Interested renovated. Current work on:
Design of new programming languages accounting for a mature
and
up-to-date understanding of previously studied features meant to
improve
the expressive power of declarative languages (lazy evaluation,
higher-order objects, types, object orientation, etc...).
Development of efficient implementations. The proposals
combine
existing techniques from logic programming (e.g., WAM, mode
analysis,
abstract interpretation) and functional programming (e.g., graph
reduction, strictness analysis, optimization of deterministic
computations) as well as new techniques (e.g., combination of
normalization and narrowing, residuation and coroutining,
parallelization).
Integration with other paradigms, like the inclusion of
constraints, real-time programming, visual programming, etc.