Concept

Ciao (programming language)

Ciao is a general-purpose programming language which supports logic, constraint, functional, higher-order, and object-oriented programming styles. Its main design objectives are high expressive power, extensibility, safety, reliability, and efficient execution. 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.), etc. Ciao is built on a kernel with an extensible modular design which allows both restricting and extending the language — it can be seen as a language building language. These restrictions and extensions can be activated separately on each program module so that several extensions can coexist in the same application for different modules. Programming in the large in Ciao is supported via: A robust module/object system. This provides module-based separate/incremental compilation (which is automatic without need for makefiles). An integrated assertion language for declaring (optional) program properties (specifications). These include types, modes, determinacy, non-failure, cost (time, memory), etc. Automatic inference and static/dynamic checking of such assertions (including unit testing). Ciao has also support for programming in the small: the compiler is capable of producing small executables (including only those builtins used by the program) and the interpreter supports scripting. 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.

About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.