Charity is a 1998 University of Calgary functional language grounded in categorical type theory, guaranteeing total termination via catamorphisms and anamorphisms.
Key Takeaways
Built on strong categorical datatypes split into inductive (constructors/folds) and coinductive (destructors/unfolds) classes.
All Charity programs are guaranteed to terminate, excluding non-termination caused by user input.
Supports higher-order functions, lazy evaluation, and purity, targeting declarative programmers familiar with functional or logic paradigms.
Designed for program specification, transformation, and verification, with straightforward equational reasoning baked into the model.
Archived GitHub mirror at mietek/charity-lang preserves interpreters and literature from the original Calgary group.