2007-06-12 11:39:47 +01:00
|
|
|
================================================================
|
|
|
|
Logtalk - Open source object-oriented logic programming language
|
2007-11-06 01:50:09 +00:00
|
|
|
Release 2.30.7
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2007-01-10 12:46:10 +00:00
|
|
|
Copyright (c) 1998-2007 Paulo Moura. All Rights Reserved.
|
2007-06-12 11:39:47 +01:00
|
|
|
================================================================
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2004-06-13 19:04:28 +01:00
|
|
|
|
|
|
|
This folder contains several examples of Logtalk programs. A brief
|
|
|
|
description of each example is included below.
|
|
|
|
|
2007-03-28 23:44:31 +01:00
|
|
|
Each example folder contains a "NOTES.txt" file and a loader helper
|
|
|
|
file that may be used to load all the example entities. In addition,
|
|
|
|
most examples contain a "SCRIPT.txt" file with instructions on how to
|
|
|
|
load the example and sample queries for your to try.
|
2004-06-13 19:04:28 +01:00
|
|
|
|
2007-03-28 23:44:31 +01:00
|
|
|
Most of these examples need objects, protocols, and categories that
|
|
|
|
are defined in the Logtalk standard library or in other examples. See
|
|
|
|
the "NOTES.txt" files inside the library folder, plus the "NOTES.txt"
|
|
|
|
and "SCRIPT.txt" files inside each example folder.
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
Some examples may redefine objects already loaded from other examples.
|
|
|
|
You may want to restart Logtalk after trying each example.
|
|
|
|
|
2007-03-28 23:44:31 +01:00
|
|
|
Some of the examples have been adopted from public available Prolog
|
2005-05-24 00:33:41 +01:00
|
|
|
code or from known Prolog text books and are copyrighted by the respective
|
2004-07-25 19:47:43 +01:00
|
|
|
authors.
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2004-07-25 19:47:43 +01:00
|
|
|
These are programming examples, meaning that you should study the source
|
2006-11-07 18:11:49 +00:00
|
|
|
files to fully understand them. However, note that some examples purpose
|
|
|
|
is to illustrate general principles rather than being adequate, efficient
|
|
|
|
solutions for deployment code.
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
All examples are formatted using four spaces tabs.
|
|
|
|
|
2007-03-28 23:44:31 +01:00
|
|
|
By default, compiling an example generates a XML documenting file for
|
|
|
|
each compiled entity (object, category, or protocol). See the "xml"
|
|
|
|
folder for instructions on how to browse the XML files for on-line
|
|
|
|
reading or how to convert the files to a print-ready format such as PDF.
|
2002-08-26 17:45:50 +01:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
Here is a short description of each included example:
|
|
|
|
|
2004-09-15 00:11:12 +01:00
|
|
|
aliases
|
2007-03-28 23:44:31 +01:00
|
|
|
example of using the alias/3 predicate directive to provide
|
|
|
|
alternative names to inherited predicates in order to improve
|
|
|
|
readability or to solve multi-inheritance conflicts
|
2004-09-15 00:11:12 +01:00
|
|
|
|
2005-01-13 12:22:42 +00:00
|
|
|
assignvars
|
2007-03-28 23:44:31 +01:00
|
|
|
example of using assignable variables in the context of parametric
|
|
|
|
objects in order to represent object state
|
2005-01-13 12:22:42 +00:00
|
|
|
|
2004-10-25 12:13:58 +01:00
|
|
|
benchmarks
|
2007-03-28 23:44:31 +01:00
|
|
|
simple benchmarks for helping measuring performance of Logtalk
|
|
|
|
message sending between Prolog compilers and for comparing
|
|
|
|
performance of message sending calls with predicate calls in
|
|
|
|
plain Prolog
|
2004-10-25 12:13:58 +01:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
birds
|
|
|
|
bird identification expert system
|
2005-08-08 13:13:45 +01:00
|
|
|
(example adopted from the Adventure in Prolog Amzi! book)
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2007-02-19 18:58:28 +00:00
|
|
|
bottles
|
|
|
|
99 bottles of beer on the wall! Sing along!
|
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
bricks
|
2007-02-19 18:58:28 +00:00
|
|
|
example of representation and handling of relations using events;
|
|
|
|
illustrates how to use events to avoid breaking object encapsulation
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
classvars
|
2005-08-08 13:13:45 +01:00
|
|
|
example of implementation of class variables
|
|
|
|
(as found in Smalltalk; i.e. shared instance variables)
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2003-04-02 14:57:50 +01:00
|
|
|
dcgs
|
2004-06-13 19:04:28 +01:00
|
|
|
examples of using DCG rules inside objects and categories
|
2003-04-02 14:57:50 +01:00
|
|
|
|
2004-09-15 00:11:12 +01:00
|
|
|
diamonds
|
|
|
|
examples of problems and solutions for the "diamond problem"
|
|
|
|
(multi-inheritance conflicts and ambiguities)
|
|
|
|
|
2002-05-28 12:29:37 +01:00
|
|
|
dynpred
|
2007-03-28 23:44:31 +01:00
|
|
|
example of using some of the built-in database handling methods
|
|
|
|
in order to implement dynamic object state
|
2002-05-28 12:29:37 +01:00
|
|
|
|
2005-04-23 00:57:45 +01:00
|
|
|
encodings
|
2005-08-08 13:13:45 +01:00
|
|
|
very simple example of using the new, experimental encoding/1
|
2005-04-23 00:57:45 +01:00
|
|
|
directive (requires Logtalk to be run with the SWI-Prolog compiler)
|
|
|
|
|
2004-09-15 00:11:12 +01:00
|
|
|
engines
|
2007-03-28 23:44:31 +01:00
|
|
|
example of category composition (importation of categories by
|
|
|
|
other categories) using car engines
|
2004-09-15 00:11:12 +01:00
|
|
|
|
2001-12-05 23:57:48 +00:00
|
|
|
errors
|
|
|
|
example showing the Logtalk compiler warning and error reporting
|
2005-12-24 18:00:21 +00:00
|
|
|
for common programming errors
|
2001-12-05 23:57:48 +00:00
|
|
|
|
2004-11-16 19:37:30 +00:00
|
|
|
hello_world
|
2005-12-24 18:00:21 +00:00
|
|
|
the unavoidable "hello world" programming example
|
2004-11-16 19:37:30 +00:00
|
|
|
|
2006-02-10 17:44:05 +00:00
|
|
|
hooks
|
2007-02-19 18:58:28 +00:00
|
|
|
simple example of using compiler hook objects and predicates
|
2006-02-10 17:44:05 +00:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
inheritance
|
2005-08-08 13:13:45 +01:00
|
|
|
examples of public, protected, and private inheritance using both
|
2001-05-21 19:39:55 +01:00
|
|
|
prototypes and classes/instances
|
|
|
|
|
|
|
|
instmethods
|
2007-02-19 18:58:28 +00:00
|
|
|
example of instance defined methods; also illustrates the use of
|
|
|
|
"super calls" to call overridden method definitions
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
lo
|
|
|
|
examples adopted from the Francis G. McCabe L&O system
|
|
|
|
|
2004-06-13 19:04:28 +01:00
|
|
|
logic
|
2005-08-08 13:13:45 +01:00
|
|
|
example of a translator of first-order predicate logic propositions
|
|
|
|
to conjunctive normal form and to clausal form
|
2004-06-13 19:04:28 +01:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
lpa
|
|
|
|
examples adopted from the LPA Prolog++ system
|
|
|
|
|
|
|
|
metapredicates
|
2006-11-07 18:11:49 +00:00
|
|
|
example of using meta-predicates in Logtalk objects
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
metainterpreters
|
2007-03-28 23:44:31 +01:00
|
|
|
some examples of simple meta-interpreters defined as categories
|
|
|
|
that can be imported by "database" objects
|
2004-06-06 23:46:45 +01:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
mi
|
2007-02-19 18:58:28 +00:00
|
|
|
simple multi-inheritance examples
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
miscellaneous
|
|
|
|
unsorted examples
|
|
|
|
|
2005-12-24 18:00:21 +00:00
|
|
|
modules
|
|
|
|
simple example of compiling Prolog module files as objects
|
|
|
|
|
2003-03-08 10:01:36 +00:00
|
|
|
msglog
|
2007-03-28 23:44:31 +01:00
|
|
|
example of using events and monitors for recording, replaying,
|
|
|
|
and printing user messages
|
2003-03-08 10:01:36 +00:00
|
|
|
|
2004-03-03 04:07:59 +00:00
|
|
|
operators
|
|
|
|
example of using operators local to objects and categories
|
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
parametric
|
|
|
|
simple example of parametric objects
|
|
|
|
|
|
|
|
poem
|
|
|
|
examples adopted from the Ben Staveley-Taylor POEM system
|
|
|
|
|
|
|
|
points
|
2007-03-28 23:44:31 +01:00
|
|
|
example adopted from SICStus Objects documentation; defines
|
|
|
|
a simple class hierarchy of points illustrating how to use
|
|
|
|
categories as object components
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
polygons
|
|
|
|
example of representation and handling of relations using events
|
|
|
|
|
|
|
|
profiling
|
|
|
|
examples of using of events and monitors to implement profilers
|
|
|
|
|
2006-03-26 18:31:34 +01:00
|
|
|
proxies
|
2007-02-19 18:58:28 +00:00
|
|
|
example of using parametric object proxies for an efficient
|
|
|
|
representation of objects with read-only state
|
2006-03-26 18:31:34 +01:00
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
puzzles
|
|
|
|
several examples of logical puzzles
|
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
reflection
|
|
|
|
example of a simple class-based reflective system
|
|
|
|
|
|
|
|
relations
|
|
|
|
objects implementing predicates for dealing with relations and
|
2007-02-19 18:58:28 +00:00
|
|
|
constrained relations between objects; used by other examples
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
roots
|
2007-03-28 23:44:31 +01:00
|
|
|
objects, protocols, and categories needed by most of the other
|
|
|
|
examples; illustrates how you can define object creation and
|
|
|
|
abolishing methods, complete with initialization and termination
|
|
|
|
options
|
2001-05-21 19:39:55 +01:00
|
|
|
|
|
|
|
searching
|
2001-12-05 23:57:48 +00:00
|
|
|
state-space searching framework
|
2007-03-28 23:44:31 +01:00
|
|
|
(example adopted from Ivan Bratko's "Prolog Programming for
|
|
|
|
Artificial Intelligence" book)
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2003-02-05 00:15:28 +00:00
|
|
|
shapes
|
2007-03-28 23:44:31 +01:00
|
|
|
simple geometric shapes implemented as both a prototype hierarchy
|
|
|
|
and a class hierarchy
|
2003-02-05 00:15:28 +00:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
sicstus
|
|
|
|
examples adopted from SICStus Objects documentation
|
|
|
|
|
|
|
|
symdiff
|
2007-03-28 23:44:31 +01:00
|
|
|
example of using parametric objects to implement symbolic
|
|
|
|
expression differentiation and simplification
|
2001-05-21 19:39:55 +01:00
|
|
|
|
2007-06-12 11:39:47 +01:00
|
|
|
tabling
|
|
|
|
simple example of using tabling directives within objects
|
|
|
|
|
2007-11-06 01:50:09 +00:00
|
|
|
testing
|
|
|
|
some examples of writing unit tests
|
|
|
|
|
2006-11-07 18:11:49 +00:00
|
|
|
threads
|
|
|
|
several simple examples of multi-threading programming
|
2007-02-19 18:58:28 +00:00
|
|
|
(requires Logtalk to be run with either YAP or SWI-Prolog)
|
2006-11-07 18:11:49 +00:00
|
|
|
|
2001-05-21 19:39:55 +01:00
|
|
|
viewpoints
|
2007-03-28 23:44:31 +01:00
|
|
|
example on how to implement property sharing and value sharing
|
|
|
|
with prototypes
|