summaryrefslogtreecommitdiff
path: root/plt
diff options
context:
space:
mode:
Diffstat (limited to 'plt')
-rw-r--r--plt/compilers.md15
-rw-r--r--plt/continuations.md19
-rw-r--r--plt/effects.md27
-rw-r--r--plt/lambda-calculus.md6
-rw-r--r--plt/memory-management.md21
-rw-r--r--plt/modules.md25
-rw-r--r--plt/monads.md8
-rw-r--r--plt/paradigms.md14
-rw-r--r--plt/patterns.md6
-rw-r--r--plt/pragmatics.md12
-rw-r--r--plt/semantics.md8
-rw-r--r--plt/syntax.md29
-rw-r--r--plt/types.md50
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)