diff options
Diffstat (limited to 'plt')
-rw-r--r-- | plt/compilers.md | 15 | ||||
-rw-r--r-- | plt/continuations.md | 19 | ||||
-rw-r--r-- | plt/effects.md | 27 | ||||
-rw-r--r-- | plt/lambda-calculus.md | 6 | ||||
-rw-r--r-- | plt/memory-management.md | 21 | ||||
-rw-r--r-- | plt/modules.md | 25 | ||||
-rw-r--r-- | plt/monads.md | 8 | ||||
-rw-r--r-- | plt/paradigms.md | 14 | ||||
-rw-r--r-- | plt/patterns.md | 6 | ||||
-rw-r--r-- | plt/pragmatics.md | 12 | ||||
-rw-r--r-- | plt/semantics.md | 8 | ||||
-rw-r--r-- | plt/syntax.md | 29 | ||||
-rw-r--r-- | plt/types.md | 50 |
13 files changed, 240 insertions, 0 deletions
diff --git a/plt/compilers.md b/plt/compilers.md new file mode 100644 index 0000000..d668308 --- /dev/null +++ b/plt/compilers.md @@ -0,0 +1,15 @@ +--- +layout: plt +title: computation/compilers +--- + +# compilers + +articles +- [Compiler optimizations are hard because they forget](https://faultlore.com/blah/oops-that-was-important/) +- [A tutorial on how to write a compiler using LLVM](https://tomassetti.me/a-tutorial-on-how-to-write-a-compiler-using-llvm/) + +books and courses +- [Programming Languages, Application and Interpretation](https://www.plai.org/) +- [Introduction to Compiler Construction](https://www.students.cs.ubc.ca/~cs-411/2022w2/book_top.html) +- [Design Your Own Language (book list)](https://slebok.github.io/dyol/books/index.html) diff --git a/plt/continuations.md b/plt/continuations.md new file mode 100644 index 0000000..b1566d0 --- /dev/null +++ b/plt/continuations.md @@ -0,0 +1,19 @@ +--- +layout: plt +title: computation/continuations +--- + +# continuations + +- [nim-works CPS](https://github.com/nim-works/cps/tree/master/docs): +- [CPS vs. SSA](http://www.mlton.org/pipermail/mlton/2003-January/023054.html) +- [By example: continuation-passing style](https://matt.might.net/articles/by-example-continuation-passing-style/) +- [How to compile with continuations](https://matt.might.net/articles/cps-conversion/) +- [**Oleg Kiselyov's writings**](https://okmij.org/ftp/continuations/) +- [An argument against call/cc](https://okmij.org/ftp/continuations/against-callcc.html) + +## continuations + +## continuation-passing style + +## deliminated continuations diff --git a/plt/effects.md b/plt/effects.md new file mode 100644 index 0000000..03b7c8e --- /dev/null +++ b/plt/effects.md @@ -0,0 +1,27 @@ +--- +layout: plt +title: computation/effects +--- + +# effects + +posts +- [Oleg Kiselyov's writings](https://www.okmij.org/ftp/) +- [Exotic Programming Ideas: Effect Systems](https://www.stephendiehl.com/posts/exotic03.html) +- [Faking algebraic effects and handlers with traits](https://blog.shtsoft.eu/2022/12/22/effect-trait-dp.html) +- [From deliminated continuations to algebraic effects](https://blog.poisson.chat/posts/2023-01-02-del-cont-examples.html) +- [OCaml effects tutorial](https://github.com/ocaml-multicore/ocaml-effects-tutorial) +- [Simple functional effects with tag unions](https://www.youtube.com/watch?v=7SidSvJcPd0) +- [Effect bibliography](https://github.com/yallop/effects-bibliography) + +papers +- [What is algebraic about algebraic effects and handlers?](https://arxiv.org/abs/1807.05923) +- [Asynchronous effects](https://dl.acm.org/doi/10.1145/3434305) + +languages +- [Koka](https://koka-lang.github.io/koka/doc/book.html) +- [Effekt](https://effekt-lang.org/) +- [Eff](https://www.eff-lang.org/) +- [Unison](https://www.unison-lang.org/) +- [Effect handlers for WebAssembly](https://wasmfx.dev/) +- [Coeffects: Context-aware programming languages](https://tomasp.net/coeffects/) diff --git a/plt/lambda-calculus.md b/plt/lambda-calculus.md new file mode 100644 index 0000000..b666ef6 --- /dev/null +++ b/plt/lambda-calculus.md @@ -0,0 +1,6 @@ +--- +layout: plt +title: computation/lambda calculus +--- + +# the lambda calculus diff --git a/plt/memory-management.md b/plt/memory-management.md new file mode 100644 index 0000000..81538be --- /dev/null +++ b/plt/memory-management.md @@ -0,0 +1,21 @@ +--- +layout: plt +title: computation/memory management +--- + +# memory management + +lobster +- [Memory Management in Lobster](https://aardappel.github.io/lobster/memory_management.html) + +nim +- [ARC/ORC in Nim](https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html) +- [ORC in Nim](https://nim-lang.org/blog/2020/12/08/introducing-orc.html) +- [Destructors and Move Semantics in Nim](https://nim-lang.org/docs/destructors.html) +- [Nim's ARC/ORC and Rust's move semantics](https://paste.sr.ht/blob/731278535144f00fb0ecfc41d6ee48513233baa4) + +## reference counting + +## tracing + +## ownership diff --git a/plt/modules.md b/plt/modules.md new file mode 100644 index 0000000..1323743 --- /dev/null +++ b/plt/modules.md @@ -0,0 +1,25 @@ +--- +layout: plt +title: computation/modules +--- + +# modules + +papers +- [F-ing Modules](https://www.cambridge.org/core/journals/journal-of-functional-programming/article/fing-modules/B573FA00832D55D4878863DE1725D90B) (2014) + +posts +- [Modules Matter Most](https://existentialtype.wordpress.com/2011/04/16/modules-matter-most/) (and [slides](http://macqueenfest.cs.uchicago.edu/slides/harper.pdf)) +- ['Modules Matter Most' for the Masses](https://www.pathsensitive.com/2023/03/modules-matter-most-for-masses.html) +- [First-Class Modules: An Introduction](https://dev.realworldocaml.org/first-class-modules.html) +- [Exotic Programming Ideas: Module Systems](https://www.stephendiehl.com/posts/exotic01.html) +- [A Crash Course on ML Modules](https://jozefg.bitbucket.io/posts/2015-01-08-modules.html) +- [UW CSE 341: ML Modules](https://courses.cs.washington.edu/courses/cse341/04wi/lectures/09-ml-modules.html) + +books +- [ATTAPL Ch. 8: Design Considerations for ML-style Module Systems](https://annas-archive.org/md5/7175434efd5620b4b117aa45a01777fa) + +An overarching question I've had that I've been unable to resolve: are ML-style modules any more expressive than a system with: +- polymorphic data types +- polymorphic interface types +- first-class modules that are *not* polymorphic (no functors)? diff --git a/plt/monads.md b/plt/monads.md new file mode 100644 index 0000000..c59ecaa --- /dev/null +++ b/plt/monads.md @@ -0,0 +1,8 @@ +--- +layout: plt +title: computation/monads +--- + +# monads + +- [Monads in 300 words](https://lambda.xyz/blog/monads/) diff --git a/plt/paradigms.md b/plt/paradigms.md new file mode 100644 index 0000000..55c32d4 --- /dev/null +++ b/plt/paradigms.md @@ -0,0 +1,14 @@ +--- +layout: plt +title: computation/programming paradigms +--- + +# reflections on programming paradigms + +## imperative programming + +## object-oriented programming + +## functional programming + +... diff --git a/plt/patterns.md b/plt/patterns.md new file mode 100644 index 0000000..fbdc95e --- /dev/null +++ b/plt/patterns.md @@ -0,0 +1,6 @@ +--- +layout: plt +title: computation/design patterns +--- + +# ways of going about doing things diff --git a/plt/pragmatics.md b/plt/pragmatics.md new file mode 100644 index 0000000..54c413f --- /dev/null +++ b/plt/pragmatics.md @@ -0,0 +1,12 @@ +--- +layout: plt +title: computation/pragmatics +--- + +## operational semantics + +big-step vs. little-step + +## Resources: +- https://cs.stackexchange.com/questions/43294/difference-between-small-and-big-step-operational-semantics +- https://langdev.stackexchange.com/questions/3352/how-do-i-formally-define-a-programming-languages-meaning-step-by-step diff --git a/plt/semantics.md b/plt/semantics.md new file mode 100644 index 0000000..191b61c --- /dev/null +++ b/plt/semantics.md @@ -0,0 +1,8 @@ +--- +layout: plt +title: computation/semantics +--- + +# formal semantics + +## denotational semantics diff --git a/plt/syntax.md b/plt/syntax.md new file mode 100644 index 0000000..0a046a7 --- /dev/null +++ b/plt/syntax.md @@ -0,0 +1,29 @@ +--- +layout: plt +title: computation/syntax +--- + +# syntax + +articles +- [An Overview of Lexing and Parsing](https://www.perl.com/pub/2012/10/an-overview-of-lexing-and-parsing.html/) +- [Just write the #!%/* parser](https://tiarkrompf.github.io/notes/?/just-write-the-parser/) + +books +- [_Compilers: Principles, Techniques, Tools_](https://annas-archive.org/md5/90db32d070cfb70ca617e655d5c35529) + +## notation + +ebnf + +npegs + +## lexing + +## parsing + +cover: +- please please please lex +- handrolled parsers +- pegs and their limitations +- other varieties of parser generators (ANTLR, lalrpop, yacc...) diff --git a/plt/types.md b/plt/types.md new file mode 100644 index 0000000..d0e1729 --- /dev/null +++ b/plt/types.md @@ -0,0 +1,50 @@ +--- +layout: plt +title: computation/types +--- + +# types! ah, wonderous types! + +posts +- ✨ [**How should I read type system notation?**](https://langdev.stackexchange.com/questions/2692/how-should-i-read-type-system-notation/) +- [Programming Language Theory resources](https://steshaw.org/plt/) + +books +- ✨ [_**Types and Programming Languages**_](https://www.cis.upenn.edu/~bcpierce/tapl/) by Benjamin C. Pierce: the canonical type system text +- [_Advanced Topics in Types and Programming Languages_](https://www.cis.upenn.edu/~bcpierce/attapl/) by Benjamin C. Pierce + + +## algebraic data types + +## inductive types +- https://en.wikipedia.org/wiki/Inductive_type + +## refinement types + +- [Liquid Haskell](https://ucsd-progsys.github.io/liquidhaskell/) +- [Refinement Types in Liquid Haskell](https://ucsd-progsys.github.io/liquidhaskell-tutorial/) +- [Refinement Types: A Tutorial](https://arxiv.org/abs/2010.07763) + +## dependent types + +usage +- [Programming Language Foundations](https://jscoq.github.io/ext/sf/plf/full/toc.html) +- [Programming Language Foundations in Agda](https://plfa.github.io/) + +languages +- [Coq](https://coq.inria.fr/) +- [Lean](https://lean-lang.org/) +- [Agda](https://wiki.portal.chalmers.se/agda/pmwiki.php) +- [Isabelle](https://isabelle.in.tum.de/) + +implementation +- [Checking dependent types with normalization by evaluation](https://davidchristiansen.dk/tutorials/nbe/) +- [Barebones lambda cube in OCaml](https://gist.github.com/Hirrolot/89c60f821270059a09c14b940b454fd6) +- [Dependent types in 80 lines of code](https://gist.github.com/Hirrolot/27e6b02a051df333811a23b97c375196) + +papers +- [Turnstile+: dependent type systems as macros](https://www.williamjbowman.com/resources/wjb2019-depmacros.pdf) + +## homotopy type theory + +- [*Homotopy Type Theory*](https://homotopytypetheory.org) |