Charity (programming language)

From Wikipedia, the free encyclopedia

Charity is a purely functional experimental programming language, developed at the University of Calgary. Based on ideas by Hagino it is completely grounded in category theory.

Disregarding interactions with the outside world, all Charity programs are guaranteed to terminate. This means that the language is not Turing-complete. Nevertheless, it is capable of expressing the Ackermann function, which makes it more expressive than primitive recursion.

The language allows ordinary recursive data types, such as might be found in ML, which are required to be finite, and corecursive data types, which are allowed to be potentially infinite. The control structure for operating on recursive data types is primitive recursion or catamorphism, and the control structure for corecursive data types is primitive co-recursion or anamorphism. Neither control structure can operate over the other kind of data, so all catamorphisms terminate and all anamorphisms are productive.

[edit] External links

Languages