CDuce

From HandWiki

CDuce is an XML-oriented functional language, which extends XDuce in a few directions. It features XML regular expression types, XML regular expression patterns, XML iterators. CDuce is not strictly speaking an XML transformation language since it can be used for general-purpose programming.

CDuce conforms to basic standards: Unicode, XML, DTD, Namespaces are fully supported, XML Schema is partially supported.

Benefits of CDuce

  • static verifications (e.g.: ensure that a transformation produces a valid document);
  • smooth and safe compositions of XML transformations and incremental programming;
  • static optimizations and efficient execution model (knowing the type of a document is crucial to extract information efficiently).
  • complete integration with OCaml (OCaml libraries can be straightforwardly imported and CDuce programs can be exported to OCaml).
  • integration with Ocsigen via the OcCDuce module

Features particular to CDuce

  • XML objects can be manipulated as first-class citizen values: elements, sequences, tags, characters and strings, attribute sets; sequences of XML elements can be specified by regular expressions, which also apply to characters strings;
  • functions themselves are first-class values, they can be manipulated, stored in data structure, returned by a function,...
  • a powerful pattern matching operation can perform complex extractions from sequences of XML elements;
  • a rich type algebra, with recursive types and arbitrary boolean combinations (union, intersection, complement) allows precise definitions of data structures and XML types; general purpose types and types constructors are taken seriously (products, extensible records, arbitrary precision integers with interval constraints, Unicode characters);
  • polymorphism through a natural notion of subtyping, and overloaded functions with dynamic dispatch;
  • a highly-effective type-driven compilation schema.

External links