Skip to content
Tech News
← Back to articles

Charity – Categorical programming language (1998)

read original more articles
Why This Matters

Charity is a pure, functional, categorical programming language developed at the University of Calgary, emphasizing strong theoretical foundations like inductive and coinductive datatypes. Its design facilitates elegant, reasoned programming and supports advanced features such as lazy evaluation and higher-order functions, making it valuable for software development, education, and research in the tech industry.

Key Takeaways

The CHARITY Home Page

NOTE: This is an archival version of a page from the Charity website.

Charity is a categorical programming language currently being developed by The Charity Development Group in The Department of Computer Science at The University of Calgary, Canada.

Charity is functional in style. That is, programmers familiar with declarative paradigms (functional and logic programmers) should find Charity easy to grasp.

Charity is based on the theory of strong categorical datatypes. These are divided into two subclasses: the inductive datatypes (built up by constructors in the familiar way) and the coinductive datatypes (broken down by destructors). Programs over these datatypes are expressed by folds (catamorphisms) and by unfolds (anamorphisms), respectively.

We list some, but not all, of Charity’s features below:

Charity is “pure”, and supports lazy evaluation .

. Charity is higher-order .

. All Charity computations terminate (up to user input).

It is our belief that Charity provides a very elegant, pure framework for software development, teaching, and language research. This framework supports straightforward reasoning about programs and is highly amenable to program specification, transformation, and verification.