71 lines
4.1 KiB
Plaintext
71 lines
4.1 KiB
Plaintext
# Type theory
|
||
|
||
Krishnaswami, Neel. _Objects and Aspects: Row Polymorphism_. <https://web.archive.org/web/20180103031716/http://www.cs.cmu.edu/~neelk/rows.pdf>
|
||
Talks a little about recursive structural types with the μ fixpoint operator.
|
||
|
||
Pearce, David J. "Iso-Recursive versus Equi-Recursive Types". <https://whileydave.com/2013/04/21/iso-recursive-versus-equi-recursive-types/>
|
||
|
||
Sampson, Adrian. "Lecture 27: Recursive Types". _CS 4110: Programming Languages and Logics_. <https://www.cs.cornell.edu/courses/cs4110/2018fa/lectures/lecture27.pdf>
|
||
Describes the theory of iso- and equirecursive types.
|
||
|
||
"Higher-rank polymorphism over unboxed types". https://cstheory.stackexchange.com/questions/37523/higher-rank-polymorphism-over-unboxed-types
|
||
Includes a detailed answer by Neel Krishnaswami.
|
||
|
||
Krishnaswami and Dunfield. "Complete and Easy Bidirectional Typechecking for Higher-Rank Polymorphism". _ICFP '13_. <https://arxiv.org/pdf/1306.6032.pdf>
|
||
|
||
Bendersky, Eli. "Type Inference". <https://eli.thegreenplace.net/2018/type-inference/>
|
||
Describes HM type inference and includes a toy implementation in Python.
|
||
|
||
Gonzalez, Gabriella. "Introductory resources to type theory for language implementers". <https://www.haskellforall.com/2022/05/introductory-resources-to-type-theory.html>
|
||
Short bibliography of resources that helped the author understand type theory.
|
||
|
||
Donham, Jake. "Reconstructing TypeScript, part 1: bidirectional type checking". <https://jaked.org/blog/2021-09-15-Reconstructing-TypeScript-part-1>
|
||
|
||
Krishnaswami and Dunfield. "Bidirectional Typing". 2020. <https://www.cl.cam.ac.uk/~nk480/bidir-survey.pdf>
|
||
"We highlight the design principles that underlie bidirectional type systems, survey the development of bidirectional typing from the prehistoric period before Pierce and Turner’s local type inference to the present day, and provide guidance for future investigations."
|
||
|
||
Gonzalez, Gabriella. "The appeal of bidirectional type-checking". <https://www.haskellforall.com/2022/06/the-appeal-of-bidirectional-type.html>
|
||
Bidirectional type checking handles subtyping well, and here's why that matters.
|
||
|
||
Christiansen, David. "Bidirectional Typing Rules: A Tutorial". <https://davidchristiansen.dk/tutorials/bidirectional.pdf>
|
||
|
||
Peyton Jones, Simon. "A Quick Look at Impredicativity". <https://m.youtube.com/watch?v=ZuNMo136QqI>
|
||
Making impredicativity work better in a bidirectional type system.
|
||
|
||
|
||
# Concurrency
|
||
|
||
Masood, Faisal. " Project Loom: Lightweight Java Threads". <https://developers.redhat.com/blog/2019/06/19/project-loom-lightweight-java-threads>
|
||
|
||
Smith, Nathaniel J. "Notes on structured concurrency, or: Go statement considered harmful". <https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/>
|
||
Describes a structured concurrency system to avoid spaghetti threads.
|
||
|
||
|
||
# Implementation
|
||
|
||
Bauer, Andrej. _The Programming Languages Zoo_. <http://plzoo.andrej.com/>
|
||
Toy implementations of a bunch of simple programming languages with small, interesting feature sets.
|
||
|
||
Toyama, Yoga. "How to Implement the Perceus Reference Counting Garbage Collection". <https://hackernoon.com/how-to-implement-the-perceus-reference-counting-garbage-collection>
|
||
Implements Koka's functional-but-in-place mechanism for a different language.
|
||
|
||
Ağacan, Ömer Sinan. "Fast Polymorphic Record Access". <https://osa1.net/posts/2023-01-23-fast-polymorphic-record-access.html>
|
||
|
||
Might, Matt. "Closure Conversion: How to Compile Lambda". <https://matt.might.net/articles/closure-conversion/>
|
||
|
||
Might, Matt. "A-Normalization: Why and How". <https://matt.might.net/articles/a-normalization/>
|
||
|
||
Peterse, Yorick. "Pattern matching in Rust".< https://github.com/yorickpeterse/pattern-matching-in-rust>
|
||
Pattern matching and exhaustiveness checking algorithms implemented in Rust.
|
||
|
||
|
||
# Prior art
|
||
|
||
"Everything You Need to Know to Write Amulet". <https://amulet.works/tutorials/02-data.html>
|
||
Overview of a similar, abandoned language.
|
||
|
||
Rushing, Sam. "Irken compiler". <https://github.com/samrushing/irken-compiler>
|
||
A compiler for a language with a strikingly similar feature set and an s-expression syntax, written in Scheme with a C VM.
|
||
|
||
Leijen, Daan et al. "Koka language". <https://github.com/koka-lang/koka>
|