Charity – Categorical programming language (1998)
Summary
Archival repository of the Charity categorical programming language, including source code for two interpreters and related literature from the 1990s.
View Cached Full Text
Cached at: 05/16/26, 09:38 AM
mietek/charity-lang
Source: https://github.com/mietek/charity-lang
charity-lang
Source code of two interpreters for the Charity language:
-
The original C implementation, by the Charity Development Group, dated 28 September 2000
-
An SML implementation, by Min Zeng, dated March 2003
Includes an archival version of the Charity website, all available literature, example programs, and binary releases of the original implementation.
Additional work
-
Gillian Posey’s Circuits package, dated 13 March 1997
-
Robin Cockett’s work on model checking, including:
- HML checker, dated 26 October 2000
- Modal Mu checker, dated 22 November 2000
- Circuit checker, dated 2 September 2001
Literature
- R. Cockett (1991) “Introduction to distributive categories”
- T. Fukushima (1991) “Charity user manual”
- R. Cockett, T. Fukushima (1992) “About Charity”
- R. Cockett (1992) “Distributive logic”
- R. Cockett, D. Spencer (1992) “Strong categorical datatypes I”
- R. Cockett, D. Spencer (1992) “Strong categorical datatypes II: A term logic for categorical programming”
- M. Hermann (1992) “A lazy graph reduction machine for Charity: Charity abstract reduction machine (CHARM)”
- T. Simpson, R. Cockett (1992) “Sequentializing programs defined by pattern matching”
- R. Cockett (1993) “Examples of Charity term logic proofs”
- M. Schroeder (1993) “Charity grammar”
- M. Schroeder (1993) “CHIRP: A front end for Charity”
- D. Spencer (1993) “Categorical programming with functorial strength”
- B. Yee (1993) “The CHARM project: A back end to the Charity interpreter”
- C. Tuckey (1994) “The implementation of pattern matching in Charity”
- B. Yee (1995) “Implementing the Charity abstract machine”
- R. Cockett (1996) “Charitable thoughts”
- T. Fukushima, C. Tuckey (1996) “Charity user manual” (final version)
- P. Vesely (1996) “Categorical combinators for Charity”
- M. Schroeder (1997) “Higher-order Charity”
- C. Tuckey (1997) “Pattern matching in Charity”
- P. Vesely (1997) “Typechecking the Charity term logic”
- M. Zeng (2003) “An implementation of Charity”
Additional literature
- R. Blute, R. Cockett, R. Seely, T. Trimble (1991) “Natural deduction and coherence for weakly distributive categories”
- R. Cockett, D. Spooner (1994) “SProc categorically”
- R. Cockett, D. Spooner (1995) “Categories for synchrony and asynchrony”
- R. Blute, R. Cockett, R. Seely, T. Trimble (1996) “Natural deduction and coherence for weakly distributive categories” (final version)
- R. Cockett, D. Spooner (1996) “Constructing process categories”
- R. Cockett, D. Spooner (1997) “Constructing process categories” (final version)
- R. Cockett, R. Seely (1997) “Proof theory for full intuitionistic linear logic, bilinear logic, and MIX categories”
- D. Spooner (1997) “Building process categories”
Related work
About
Packaged by Miëtek Bak.
Similar Articles
C programmers commit fresh crimes against readability
The 2025 International Obfuscated C Code Contest winners are announced, featuring 23 entries including Adrian Cable's Subleq computer emulator that enables software preservation through a one-instruction set architecture.
History of John Backus's functional programming project [draft]
A draft historical preservation of John Backus's functional programming languages, including context and materials from his research project.
Logic for Programmers v0.15, Livecoding
Hillel Wayne announces version 0.15 release candidate of his book 'Logic for Programmers', and highlights a livecoding meetup featuring Strudel and CLAVIER-36 for music programming.
CPPL: A Circuit Prompt Programming Language
CPPL is a compiler-mediated framework that bridges LLMs and hardware design by using a Python DSL and JSON-based intermediate representation to enable statically checkable, optimizable RTL generation.
7 lines of code, 3 minutes: Implement a programming language (2010)
This article presents a minimalist 7-line interpreter for a Turing-equivalent functional language based on lambda calculus, demonstrating the eval/apply design pattern.