Girish Mahajan (Editor)

Logtalk

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Designed by
  
Paulo Moura

OS
  
Cross-platform

Paradigm
  
Logic programming, object-oriented programming, prototype-based programming

First appeared
  
1998; 19 years ago (1998)

Stable release
  
3.01.0 / September 12, 2015; 17 months ago (2015-09-12)

Preview release
  
3.00.0 Release Candidate 9 / December 19, 2014; 2 years ago (2014-12-19)

Logtalk is an object-oriented logic programming language that extends and leverages the Prolog language with a feature set suitable for programming in the large. It provides support for encapsulation and data hiding, separation of concerns and enhanced code reuse. Logtalk uses standard Prolog syntax with the addition of a few operators and directives.

Contents

The Logtalk language implementation is distributed under an open source license and can run using a Prolog implementation (compliant with official and de facto standards) as the back-end compiler.

Features

Logtalk aims to bring together the advantages of object-oriented programming and logic programming. Object-orientation emphasizes developing discrete, reusable units of software, while logic programming emphasizes representing the knowledge of each object in a declarative way.

As an object-oriented programming language, Logtalk's major features include support for both classes (with optional metaclasses) and prototypes, parametric objects, protocols (interfaces), categories (components, aspects, hot patching), multiple inheritance, public/protected/private inheritance, event-driven programming, high-level multi-threading programming, reflection, and automatic generation of documentation.

For Prolog programmers, Logtalk provides wide portability, featuring predicate namespaces (supporting both static and dynamic objects), public/protected/private object predicates, coinductive predicates, separation between interface and implementation, simple and intuitive meta-predicate semantics, lambda expressions, definite clause grammars, term-expansion mechanism, and conditional compilation. It also provides a module system based on de facto standard core module functionality (internally, modules are compiled as prototypes).

Examples

Logtalk's syntax is based on Prolog:

Defining an object:

Using the object, assuming is saved in a my_first_object.lgt file:

Trying to access the private predicate gives an error:

Prolog back-end compatibility

As of October 2011, supported back-end Prolog compilers include B-Prolog, CxProlog, ECLiPSe, GNU Prolog, LeanProlog, Qu-Prolog, SICStus Prolog, SWI-Prolog, XSB, and YAP Prolog. Logtalk allows seamless use of most back-end Prolog compiler libraries from within object and categories.

Developer tools

Logtalk features on-line help, a documenting tool (that can generate PDF and HTML files), an entity diagram generator tool, a built-in debugger (based on an extended version of the traditional Procedure Box model found on most Prolog compilers), a unit test framework with code coverage analysis, and is also compatible with selected back-end Prolog profilers and graphical tracers.

Applications

Logtalk has been used to process STEP data models used to exchange product manufacturing information. It has also been used to implement a reasoning system that allows preference reasoning and constraint solving.

References

Logtalk Wikipedia