fbpx
Wikipedia

Logtalk

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.[1] It provides support for encapsulation and data hiding, separation of concerns and enhanced code reuse.[1] Logtalk uses standard Prolog syntax with the addition of a few operators and directives.

Logtalk
ParadigmLogic programming, object-oriented programming, prototype-based programming
Designed byPaulo Moura
First appeared1998; 25 years ago (1998)
Stable release
3.66.0 / 30 May 2023; 6 months ago (2023-05-30)
OSCross-platform
LicenseArtistic License 2.0 (2.x) / Apache License 2.0 (3.01.x)
Websitelogtalk.org
Influenced by
Prolog, Smalltalk, Objective-C

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)[1] as the back-end compiler.

Features edit

Logtalk aims to bring together the advantages of object-oriented programming and logic programming.[1] 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,[2] protocols (interfaces), categories (components, aspects, hot patching), multiple inheritance, public/protected/private inheritance, event-driven programming, high-level multi-threading programming,[3] 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 edit

Logtalk's syntax is based on Prolog:

?- write('Hello world'), nl. Hello world true. 

Defining an object:

:- object(my_first_object).   :- initialization((write('Hello world'), nl)).   :- public(p1/0). p1 :- write('This is a public predicate'), nl.   :- private(p2/0). p2 :- write('This is a private predicate'), nl. :- end_object. 

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

?- logtalk_load(my_first_object). Hello world true. ?- my_first_object::p1. This is a public predicate true. 

Trying to access the private predicate gives an error:

?- my_first_object::p2. ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user) 

Anonymous functions edit

Logtalk uses the following syntax for anonymous predicates (lambda expressions):

{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal 

A simple example with no free variables and using a list mapping predicate is:

| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys). Ys = [2,4,6] yes 

Currying is also supported. The above example can be written as:

| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys). Ys = [2,4,6] yes 

Prolog back-end compatibility edit

Supported back-end Prolog compilers include B-Prolog, Ciao Prolog, CxProlog, ECLiPSe, GNU Prolog, JIProlog, Quintus Prolog, Scryer Prolog, SICStus Prolog, SWI-Prolog, Tau Prolog, Trealla Prolog, XSB, and YAP.[4] Logtalk allows use of back-end Prolog compiler libraries from within object and categories.

Developer tools edit

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.[5]

Applications edit

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

See also edit

References edit

  1. ^ a b c d Paulo Moura (2003). Logtalk: Design of an Object-Oriented Logic Programming Language. PhD thesis. Universidade da Beira Interior
  2. ^ Moura, Paulo (2011). Programming Patterns for Logtalk Parametric Objects. Applications of Declarative Programming and Knowledge Management. Lecture Notes in Computer Science. Vol. 6547. doi:10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
  3. ^ Practical Aspects of Declarative Languages. Lecture Notes in Computer Science. Vol. 4902. 2008. doi:10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9.
  4. ^ "Logtalk compatibility". Logtalk.org. 2016-10-10. Retrieved 2021-07-06.
  5. ^ "Developer Tools – LogtalkDotOrg/logtalk3 Wiki – GitHub". Github.com. 2013-02-12. Retrieved 2013-08-19.
  6. ^ Logic Programming. Lecture Notes in Computer Science. Vol. 4079. 2006. doi:10.1007/11799573. ISBN 978-3-540-36635-5.
  7. ^ Victor Noël; Antonis Kakas (2009). Gorgias-C: Extending Argumentation with Constraint Solving (PDF). Logic Programming and Nonmonotonic Reasoning. Lecture Notes in Computer Science. Vol. 5753. pp. 535–541.

External links edit

  • Official website
  • Logtalking blog
  • From Plain Prolog to Logtalk Objects: Effective Code Encapsulation and Reuse (Invited Talk). Paulo Moura. Proceedings of the 25th International Conference on Logic Programming (ICLP), July 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg". (Slides)

logtalk, object, oriented, logic, programming, language, that, extends, leverages, prolog, language, with, feature, suitable, programming, large, provides, support, encapsulation, data, hiding, separation, concerns, enhanced, code, reuse, uses, standard, prolo. 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 1 It provides support for encapsulation and data hiding separation of concerns and enhanced code reuse 1 Logtalk uses standard Prolog syntax with the addition of a few operators and directives LogtalkParadigmLogic programming object oriented programming prototype based programmingDesigned byPaulo MouraFirst appeared1998 25 years ago 1998 Stable release3 66 0 30 May 2023 6 months ago 2023 05 30 OSCross platformLicenseArtistic License 2 0 2 x Apache License 2 0 3 01 x Websitelogtalk wbr orgInfluenced byProlog Smalltalk Objective CThe Logtalk language implementation is distributed under an open source license and can run using a Prolog implementation compliant with official and de facto standards 1 as the back end compiler Contents 1 Features 2 Examples 2 1 Anonymous functions 3 Prolog back end compatibility 4 Developer tools 5 Applications 6 See also 7 References 8 External linksFeatures editLogtalk aims to bring together the advantages of object oriented programming and logic programming 1 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 2 protocols interfaces categories components aspects hot patching multiple inheritance public protected private inheritance event driven programming high level multi threading programming 3 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 editLogtalk s syntax is based on Prolog write Hello world nl Hello world true Defining an object object my first object initialization write Hello world nl public p1 0 p1 write This is a public predicate nl private p2 0 p2 write This is a private predicate nl end object Using the object assuming is saved in a my first object lgt file logtalk load my first object Hello world true my first object p1 This is a public predicate true Trying to access the private predicate gives an error my first object p2 ERROR error permission error access private predicate p2 my first object p2 user Anonymous functions edit This section is an excerpt from Anonymous function Logtalk edit Logtalk uses the following syntax for anonymous predicates lambda expressions FreeVar1 FreeVar2 LambdaParameter1 LambdaParameter2 gt gt Goal A simple example with no free variables and using a list mapping predicate is meta map X Y gt gt Y is 2 X 1 2 3 Ys Ys 2 4 6 yes Currying is also supported The above example can be written as meta map X gt gt Y gt gt Y is 2 X 1 2 3 Ys Ys 2 4 6 yesProlog back end compatibility editSupported back end Prolog compilers include B Prolog Ciao Prolog CxProlog ECLiPSe GNU Prolog JIProlog Quintus Prolog Scryer Prolog SICStus Prolog SWI Prolog Tau Prolog Trealla Prolog XSB and YAP 4 Logtalk allows use of back end Prolog compiler libraries from within object and categories Developer tools editLogtalk 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 5 Applications editLogtalk has been used to process STEP data models used to exchange product manufacturing information 6 It has also been used to implement a reasoning system that allows preference reasoning and constraint solving 7 See also editMercury programming language Oz programming language Prolog Visual PrologReferences edit a b c d Paulo Moura 2003 Logtalk Design of an Object Oriented Logic Programming Language PhD thesis Universidade da Beira Interior Moura Paulo 2011 Programming Patterns for Logtalk Parametric Objects Applications of Declarative Programming and Knowledge Management Lecture Notes in Computer Science Vol 6547 doi 10 1007 978 3 642 20589 7 4 ISBN 978 3 642 20588 0 Practical Aspects of Declarative Languages Lecture Notes in Computer Science Vol 4902 2008 doi 10 1007 978 3 540 77442 6 ISBN 978 3 540 77441 9 Logtalk compatibility Logtalk org 2016 10 10 Retrieved 2021 07 06 Developer Tools LogtalkDotOrg logtalk3 Wiki GitHub Github com 2013 02 12 Retrieved 2013 08 19 Logic Programming Lecture Notes in Computer Science Vol 4079 2006 doi 10 1007 11799573 ISBN 978 3 540 36635 5 Victor Noel Antonis Kakas 2009 Gorgias C Extending Argumentation with Constraint Solving PDF Logic Programming and Nonmonotonic Reasoning Lecture Notes in Computer Science Vol 5753 pp 535 541 External links editOfficial website Logtalking blog From Plain Prolog to Logtalk Objects Effective Code Encapsulation and Reuse Invited Talk Paulo Moura Proceedings of the 25th International Conference on Logic Programming ICLP July 2009 LNCS 5649 Springer Verlag Berlin Heidelberg Slides Retrieved from https en wikipedia org w index php title Logtalk amp oldid 1184798674, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.