aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorJJ2023-07-20 10:14:55 +0000
committerJJ2023-07-20 10:21:59 +0000
commit3cf3e70cb7fcd75d53828924496699678796f5ed (patch)
tree3c4d1980cb7e8eb13017413e61eb1b15f1f2a20d /README.md
parent9672fe3861f283efc91a9cca78b17fecc5826210 (diff)
implement typeclasses as interfaces
Diffstat (limited to 'README.md')
-rw-r--r--README.md10
1 files changed, 6 insertions, 4 deletions
diff --git a/README.md b/README.md
index eb32d74..dcc79bd 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
# chrysanthemum
-chrysanthemum is a simple language with a type system, initially written as a term project for CPSC 539.
+chrysanthemum is a simple language with a complex type system, initially written as a term project for CPSC 539.
It implements a number of features from the excellent *Types and Programming Languages*, including:
- The simply typed lambda calculus
- Bidirectional type checking and subtyping support
- A somewhat complex type system: including support for:
- `unit`, `bool`, `int`, `nat`, `float`, `str`,
- `struct`, `tuple`, `union`, `list`, `array`, `slice`,
- - `empty`, `error`
+ - `interface`, `empty`, `error`
## todo
@@ -17,6 +17,7 @@ It implements a number of features from the excellent *Types and Programming Lan
- [x] bidirectional typechecking: implement `infer` and `check`
- [x] extend to additional basic types: refactor `Term`
- [x] extend to complex types: improve `subtype`
+- [x] meet my original standards: implement `interface`
- [ ] make complex types useful: implement `access`
- [ ] type classes: implement `monomorphize`
- [ ] simple effects: extend `ast`
@@ -39,9 +40,10 @@ test/ # various tests
## bibliography
-- [TAPL](https://www.cis.upenn.edu/~bcpierce/tapl/)
+- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/)
+- [Advanced Topics in Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/attapl/)
- [Bidirectional Typing Rules: A Tutorial](https://www.davidchristiansen.dk/tutorials/bidirectional.pdf)
- [Bidirectional Typechecking](https://research.cs.queensu.ca/home/jana/bitype.pdf)
-- [Typechecking for Higher-Rank Polymorphism](https://arxiv.org/pdf/1306.6032.pdf)
- [Bidirectional Type Class Instances](https://arxiv.org/pdf/1906.12242.pdf)
+- [Typechecking for Higher-Rank Polymorphism](https://arxiv.org/pdf/1306.6032.pdf)
- [How to make ad-hoc polymorphism less ad-hoc](https://dl.acm.org/doi/pdf/10.1145/75277.75283)