This is a collection of coding exercises and experiments. Some basic configs such as the and git-related settings are shared across labs. Most labs use TypeScript and Deno, but other programming langauges and tools are used as well. Each lab has its own directory which is like a standalone mini-repository. There are no code dependencies between labs.
Each lab is phrased as a question.
The tables below provide an overview of those questions.
Open questions are sorted by priority (highest at the top).
Resolved questions are sorted by their resolution date (most recent at the top).
If a question is marked with strikethrough it was either aborted or done as part of a another lab.
| Num | Parent | Created | Tags | Question |
|---|---|---|---|---|
| 0023 | 2026-05-15 | memory | Can ownership be modelled within functions and across function boundaries with a small DSL? | |
| 2026-0- |
| Num | Parent | Created | Tags | Question |
|---|---|---|---|---|
| 0022 | 2026-05-14 | web | How can the content and structure of an HTML page be edited in place? | |
| 0014 | 2026-02-20 | ssa, graphs | ||
| 0021 | 2026-05-13 | capability, io | How can a side-effect capabilities be injected into modules? | |
| 0020 | 2026-05-06 | ssa, memory | Can a dataflow analysis check lifetimes of SSA variables in a function? | |
| 0019 | 2026-05-05 | ssa, graphs | How can a control flow graph be constructed from SSA code? | |
| 0018 | 2026-05-03 | memory | Can variable lifetimes be verified with a domain specific language (DSL)? | |
| 0017 | 2026-05-02 | ast, grammar | Can an ANF-inspired grammar be relaxed to support nested expressions like Scheme? | |
| 0015 | 2026-03-16 | backend | How can Hono be used to accept GET and POST requests? | |
| 0016 | 2026-03-21 | types | How can a simple type system be defined and checked? | |
| 0013 | 2026-01-03 | graphs | What is a lightweight way to implement reachability on directed graphs in Typescript? | |
| 0012 | 2026-01-02 | datalog, ssa | How can non-dominance of CFG nodes be expressed using positive Datalog? | |
| 0011 | 2025-12-28 | datalog, types | Can cons-cells be used to type-check multi-argument functions using Datalog? | |
| 0011 | 2025-12-27 | datalog, types | How can multi-argument functions be type-checked using Datalog? | |
| 0009 | 2025-12-22 | datalog, types | How can a basic type-checker be implemented in Datalog? | |
| 0010 | 2025-12-28 | datalog | How can the equality of lists, constructed of cons-cells, be tested in Datalog? | |
| 0008 | 2025-12-19 | datalog | How can I solve logic problems using Datalog? | |
| 0007 | 2025-12-18 | datalog | How can Datalog be used to verify properties on graphs? | |
| 0006 | 2025-10-15 | memory | How can cons cells be implemented? | |
| 0005 | 2025-10-25 | vm | How can an evaluator for 3-address code be implemented? | |
| 0005 | 2025-10-15 | vm, lowering | ||
| 0005 | 2025-10-15 | vm, evaluation | ||
| 0005 | 2025-10-15 | vm, evaluation | ||
| 0004 | 2025-10-15 | ast, passes | How can a function call node in an AST be split into two nodes, for currying? | |
| 0004 | 2025-10-15 | typescript, deno | ||
| 0004 | 2025-10-15 | syntax, ast | ||
| 0004 | 2025-10-16 | ast | ||
| 2025-10-18 | control-flow | |||
| 0003 | 2025-10-05 | parsing | How can the language of balanced parentheses be verified by a table-driven parser? | |
| 0002 | 2025-06-08 | evaluation | How can de Bruijn levels be used to evaluate unary lambda calculus? | |
| 0001 | 2025-10-15 | typescript, deno | How can Deno be used to prototype a function and a test in typescript? | |
| 0000 | 2025-10-15 | learning | Can a questions repo, with compact code snippets and notes, speed up learning and implementation? |
Copyright (c) 2025 Marco Nikander