Charity (programming language)
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
|Developer||The Charity Development Group|
1.99.1 (beta) / August 2000
|OS||Linux, SunOS, Windows 9x, Windows NT|
|License||Non-commercial use only|
Charity is an experimental purely functional programming language, developed at the University of Calgary under the supervision of Robin Cockett. Based on ideas by Hagino Tatsuya, it is completely grounded in category theory.
Disregarding interactions with the outside world, all Charity programs are guaranteed to terminate or stay productive.
“Charity was an interesting exercise in non-Turing-complete programming languages that is capable of expressing the Ackermann function. Alas, it seems to have not been active over the last 10 years. Though it would be of interest to anyone interested in seeing how far one can take a non-TC language” (links added). The shown examples include also solving the Tower of Hanoi problem (source). Charity is also related to the total functional programming languages.
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 paramorphism, and the control structure for corecursive data types is primitive co-recursion or apomorphism. Neither control structure can operate over the other kind of data, so all paramorphisms terminate and all apomorphisms are productive.
- Cockett, Robin; Fukushima, Tom (May 27, 1992). "About Charity". Yellow Series Report. Calgary, Alberta, Canada: Department of Computer Science, University of Calgary (92/480/18).
- "Download The Charity System". CHARITY. The Charity Development Group. October 2000. Retrieved 2011-03-06.
- "License Conditions". CHARITY. The Charity Development Group. September 1997. Retrieved 2011-03-06.
- Hagino, Tatsuya: Categorical programming
- Lambda The Ultimate: On the importance of Turing completeness | Ackermann termination
- Official website
- A GitHub Repository Containing Charity Implementations and the Bulk of Charity Research
|This programming-language-related article is a stub. You can help Wikipedia by expanding it.|