☰
↑
←
→
🔍
TOC
The Ciao System
»
Table of Contents
Table of Contents
Introduction
Getting started
Installing Ciao
Using Ciao from the command line
An introduction to the Ciao emacs environment
Troubleshooting
PART I - The program development environment
The interactive top-level shell
The interactive debugger
Predicates controlling the interactive debugger
Profiling
Bundle management
The standalone command-line compiler
The script interpreter
Other miscellaneous standalone utilities
Display information about Ciao object files
callgraph (library)
Finding differences between two Prolog files
Using Ciao inside GNU emacs
Advanced Ciao Emacs functionalities
Flycheck Ciao: on-the-fly syntax and assertion checking, and testing
Company Ciao: advanced autocompletion
PART II - The Ciao basic language
Basic concepts and conventions
The module system
Bundles and workspaces
Packages and language extension
Conditional compilation
Control constructs/predicates
Exception and signal handling
Extra-logical properties for typing
Basic term manipulation
Comparing terms
Conversion between constants and strings
Arithmetic
PART III - Assertions and their use
The Ciao assertion language
Types and properties related to assertions
Declaring regular types
Basic data types and properties
Properties which are native to analyzers
Properties related to sharing/aliasing, groundness
Properties related to determinacy, failure, choice-points
Properties related to cardinality and exact solutions
Properties related to exceptions and signals
Properties related to side effects
Properties related to polyhedral constraints
Properties related to data sizes, cost, termination
Classical Prolog modes
ISO-Prolog modes
Some basic Prolog modes
Meta-properties
Documentation comments
Run-time checking of assertions
Unit testing
Special properties for testing
Loading auxiliary test-related code
Testing statistics
Examples (unittest)
Using assertions for preprocessing programs
PART IV - Language extensions
No-prelude
Pure Prolog package
Higher-order support
Traits
Terms with named arguments -records/feature terms
Functional notation
Definite Clause Grammars
Phrase support for DCGs
Backtrackable global variables
Mutable terms
Multiple argument indexing
Block declarations
Delaying predicates (freeze)
Delaying predicates (when)
Andorra execution
Call on determinate
Runtime predicates for call on determinate
Lazy evaluation
Lazy evaluation library
Breadth-first execution
Iterative-deepening execution
Miscellaneous predicates
Aggregates: gathering predicate solutions
Fast/concurrent update of facts
Fast/concurrent update of facts (runtime)
Dynamic predicates (not source preserving)
Dynamic predicates (not source preserving) (runtime)
Dynamic predicates (source preserving)
Dynamic predicates (source preserving) (runtime)
Persistent predicate database
Using the persdb library
Manager for persistent data directories
Filed predicates
Filed predicates (runtime)
Low-level concurrency/multithreading primitives
Aggregates (concurrency-safe)
Active modules
Distribution protocol for active modules
The ``filebased'' registry protocol
The ``platformbased'' registry protocol
The ``webbased'' registry protocol
Active module processes
actmod_rt (library)
Constraint programming over rationals
Constraint programming over reals
Constraint programming over finite domains (new)
Finite domain solver runtime
Tabling execution
Attributed variables
Attributed variables runtime
Low-level attributed variables
C Foreign language interface
Foreign language interface properties
Utilities for on-demand compilation of foreign files
Foreign language interface builder
PART V - Compatibility
Classic Prolog
Classic Prolog predicates
Stricter ISO-Prolog package
ISO Chars
Miscellaneous ISO Prolog predicates
ISO Prolog compatibility layer
DEC-10 Prolog file IO
Quintus-like internal database
C-Prolog terminal I/O
Enabling operators at run-time
Printing dynamic predicates
PART VI - Data structures and algorithms
List processing
Common higher-order predicates
Sorting lists
Lists of lists
Identity lists
Lists of numbers
String processing
A fuzzy search and word metric library
Diff algorithm
Dictionaries
Variable name dictionaries
Extendable arrays with logarithmic access time
Association between key and value
Key-value lists
Graphs
Unweighted graph-processing utilities
Labeled graph-processing utilities
Queues
Set operations
Bit-coded-set operations
Lists of sets
PART VII - Standard libraries
Stream handling and operations
Basic file/stream handling
Basic input/output stream operations
Stream utilities
Tokenizer
Term input
Term input from strings
Term output
Defining operators
Formatted output
Reading/writting list of terms
Message printing primitives
Runtime system control and flags
Runtime system information
Assertion processing library
Dynamic loading and compilation
Customizing path aliases
Operating system utilities
File path names
Processes (multitasking)
Process channels
Logged processes
PART VIII - Additional libraries
Accessing and redirecting the stream aliases
Call goals with reified (exit) ports.
Call goals with reified IO and (exit) ports
ctrlcclean (library)
Default exception handler and pretty printer
Term manipulation utilities
Term checking utilities
Sets of variables in terms
Cyclic terms handling
Fast reading and writing of terms
Modules as blobs
Lists and conjunctions and disjunctions
counters (library)
Enumeration of integers inside a range
A simple pretty-printer for Ciao programs
Pretty-printing assertions
A syntax highlighter
Operations on source trees
Version string parsing and comparison
The Ciao library browser
Random numbers
Randomized aggregates
The socket interface
Sockets I/O
HTTP client/server libraries
HTTP client
HTTP server
URL encoding/decoding
Form Data and Query Strings
CGI programming
HTTP messages (response and request)
HTTP dates
Common grammar definitions for HTTP
Web programming libraries (PiLLoW)
HTML/XML parser and generator
JSON encoder and decoder
Color space transformations
Shell-style pathname pattern expansion
Pattern (regular expression) matching
regexp_code (library)
Text templates
Printing status and error messages
Interactive menus
menu_generator (library)
Parse and return command-line options
Additional operating system utilities
Shell-style argument parsing
File archiver
File locks
Symbolic filenames
Open a document with an external application
Open a Ciao playground
Calling emacs from Prolog