The Logtalk Handbook¶
- User Manual
- Declarative object-oriented programming
- Main features
- Integration of logic and object-oriented programming
- Integration of event-driven and object-oriented programming
- Support for component-based programming
- Support for both prototype and class-based systems
- Support for multiple object hierarchies
- Separation between interface and implementation
- Private, protected and public inheritance
- Private, protected and public object predicates
- Parametric objects
- High level multi-threading programming support
- Smooth learning curve
- Compatibility with most Prolog systems and the ISO standard
- Logtalk scope
- Event-driven programming
- Multi-threading programming
- Error handling
- Writing and running applications
- Starting Logtalk
- Running parallel Logtalk processes
- Source files
- Multi-pass compiler
- Compiling and loading your applications
- Loader files
- Libraries of source files
- Settings files
- Compiler linter
- Compiler flags
- Reloading source files
- Batch processing
- Optimizing performance
- Portable applications
- Conditional compilation
- Avoiding common errors
- Coding style guidelines
- Printing messages and asking questions
- Term and goal expansion
- Source code compilation modes
- Local predicate calls
- Calls to imported or inherited predicates
- Calls to module predicates
- Automatic expansion of built-in meta-predicates
- Generated code simplification and optimizations
- Size of the generated code
- Debug mode overhead
- Other considerations
- Installing Logtalk
- Prolog integration and migration
- Reference Manual
- Control constructs
- Built-in predicates
- Enumerating objects, categories and protocols
- Enumerating objects, categories and protocols properties
- Creating new objects, categories and protocols
- Abolishing objects, categories and protocols
- Objects, categories, and protocols relations
- Event handling
- Multi-threading engines
- Compiling and loading source files
- Built-in methods
- Should I use prototypes or classes in my application?
- Can I use both classes and prototypes in the same application?
- Can I mix classes and prototypes in the same hierarchy?
- Can I use a protocol or a category with both prototypes and classes?
- What support is provided in Logtalk for defining and using components?
- What support is provided in Logtalk for reflective programming?
- Using compiler options on calls to the Logtalk compiling and loading predicates do not work!
- Gecko-based browsers (e.g. Firefox) show non-rendered HTML entities when browsing XML documenting files!
- Compiling a source file results in errors or warnings but the Logtalk compiler reports a successful compilation with zero errors and zero warnings!
- Is Logtalk implemented as a meta-interpreter?
- What kind of code Logtalk generates when compiling objects? Dynamic code? Static code?
- How about message-sending performance? Does Logtalk use static binding or dynamic binding?
- Which Prolog-dependent factors are most crucial for good Logtalk performance?
- How does Logtalk performance compare with plain Prolog and with Prolog modules?
- Developer Tools
- Main files
- API documentation
- Writing and loading tests
- Running unit tests
- Parametric test objects
- Test dialects
- User-defined test dialects
- Skipping tests
- Checking test goal results
- Testing local predicates
- Testing non-deterministic predicates
- Testing generators
- Testing input/output predicates
- Suppressing tested predicates output
- Tests with timeout limits
- Setup and cleanup goals
- Test annotations
- Flaky tests
- Debugging failed tests
- Code coverage
- Automating running tests
- Utility predicates
- Exporting test results in xUnit XML format
- Exporting test results in the TAP output format
- Generating Allure reports
- Exporting code coverage results in XML format
- Minimizing test results output
- Known issues