CDuce is a functional programming language adapted to the safe and efficient manipulation of XML documents. Its type system ensures the validity (with respect to some DTD) of documents resulting from a transformation on valid inputs. CDuce features higher-order and overloaded functions, implicit subtyping, powerful pattern matching operations based on regular expression patterns, and other general purpose constructions.
Starting from the 0.2.0 release, CDuce includes a typeful interface with Objective Caml, which allows a smooth integration of the two languages in a complex project. CDuce units can use existing Objective Caml libraries without the burden of writing any stub code, and they can themselves be used from Objective Caml.
A new version released in 2006 improves various aspects of the system: a more efficient subtyping algorithm, better error messages, more precise type-checking of records.
Web site: http://www.cduce.org/ .