Ciao (programming language)

Its main design objectives are high expressive power, extensibility, safety, reliability, and efficient execution.

[1] Ciao provides a full Prolog system (supporting ISO-Prolog), declarative subsets and extensions of Prolog, functional programming (including lazy evaluation), higher-order (with predicate abstractions), constraint programming, and objects, as well as feature terms (records), persistence, several control rules (breadth-first search, iterative deepening, ...), concurrency (threads/engines), distributed execution (agents), and parallel execution.

Libraries also support WWW programming, sockets, external interfaces (C, Java, TclTk, relational databases, etc.

The environment includes a classical top-level and an evolved emacs interface with an embeddable source-level debugger and a number of execution visualization tools.

It processes programs adorned with (Ciao) assertions and machine-readable comments and generates manuals in many formats including HTML, pdf, texinfo, info, man, etc., as well as on-line help, ascii README files, entries for indices of manuals (info, WWW, ...), and maintains WWW distribution sites.