Amelia's Blag: Latest articles
https://amelia.how
Sun, 13 Mar 2022 00:00:00 UTThe Adjoint Functor Theorem in Everyday Life
https://amelia.how/posts/the-adjoint-functor-theorem-in-everyday-life.html
Here’s a mathematical situation that comes up a lot more often than is reasonable. Suppose we have some mathematical object $G$, generally defined as some structure on a set: a group, a ring, a topological space. These all have natural categorical structures, so we can - in a uniform way - talk about their subobjects:]]>Sun, 13 Mar 2022 00:00:00 UThttps://amelia.how/posts/the-adjoint-functor-theorem-in-everyday-life.htmlAméliaThe Complete History of isoToEquiv
https://amelia.how/posts/the-complete-history-of-isotoequiv.html
It’s a standard fact in (higher) category theory and homotopy theory that any equivalence of categories (homotopy equivalence) can be improved to an adjoint equivalence of categories (strong homotopy equivalence). Adjoint equivalences (and strong homotopy equivalences) are “more structured” notions in the sense that the data of an adjoint equivalence is contractible if inhabited.]]>Fri, 17 Dec 2021 00:00:00 UThttps://amelia.how/posts/the-complete-history-of-isotoequiv.htmlAméliaParsing Layout, or: Haskell's Syntax is a Mess
https://amelia.how/posts/parsing-layout.html
Hello! Today we’re going to talk about something I’m actually good at, for a change: writing compilers. Specifically, I’m going to demonstrate how to wrangle Alex and Happy to implement a parser for a simple language with the same indentation sensitive parsing behaviour as Haskell, the layout rule.]]>Fri, 03 Sep 2021 00:00:00 UThttps://amelia.how/posts/parsing-layout.htmlAméliaCubical Sets
https://amelia.how/posts/cubical-sets.html
In which I try to write about semantics. This is not gonna go well, but I’m gonna try my best. I’ve heard it on good authority that the best way to learn something is to explain it to someone else, so in this post I’m going to use you, dear reader, as my rubber duck while I try to understand cubical sets. These are important (to me) because they provide a semantic model of cubical type theory (which I have written about previously), and since we have a semantic model, that theory is (semantically) consistent.]]>Mon, 21 Jun 2021 00:00:00 UThttps://amelia.how/posts/cubical-sets.htmlAméliaA quickie: Axiom J
https://amelia.how/quick/axiom-j.html
Hey y’all, it’s been three months since my last blog post! You know what that means.. or should mean, at least. Yes, I’d quite like to have another long blog post done, but… Life is kinda trash right now, no motivation for writing, whatever. So over the coming week(s) or so, as a coping mechanism for the chaos that is the end of the semester, I’m gonna write a couple of really short posts (like this one) that might not even be coherent at all—this sentence sure isn’t.]]>Mon, 07 Jun 2021 00:00:00 UThttps://amelia.how/quick/axiom-j.htmlAméliaCubical Type Theory
https://amelia.how/posts/cubical-type-theory.html
Hello, everyone! It’s been a while, hasn’t it? Somehow, after every post, I manage to convince myself that I’m gonna be better and not let a whole season go by between posts, but it never happens. For the last two posts I’ve been going on at length about fancy type theories, and this post, as the title implies, is no exception. In fact, two posts ago I mentioned, offhand, cubical type theory as a possibility for realising HoTT in a constructive way, but 128 days ago I did not understand cubical type theory in the slightest.]]>Sun, 07 Mar 2021 00:00:00 UThttps://amelia.how/posts/cubical-type-theory.htmlAméliaOn Induction
https://amelia.how/posts/on-induction.html
Last time on this… thing… I update very occasionally, I talked about possible choices for representing equality in type theory. Equality is very important, since many properties of programs and mathematical operators are stated as equalities (e.g., in the definition of a group). However, expressing properties is useless if we can’t prove them, and this is where inductive types come in.]]>Fri, 15 Jan 2021 00:00:00 UThttps://amelia.how/posts/on-induction.htmlAméliaReflections on Equality
https://amelia.how/posts/reflections-on-equality.html
When shopping for a dependent type theory, many factors should be taken into consideration: how inductive data is represented (inductive schemas vs W-types), how inductive data computes (eliminators vs case trees), how types of types are represented (universes à la Tarski vs à la Russell). However, the most important is their treatment of equality.]]>Fri, 30 Oct 2020 00:00:00 UThttps://amelia.how/posts/reflections-on-equality.htmlAméliaThe Semantics of Evaluation & Continuations
https://amelia.how/posts/the-semantics-of-evaluation-amp-continuations.html
Continuations are a criminally underappreciated language feature. Very few languages (off the top of my head: most Scheme dialects, some Standard ML implementations, and Ruby) support the—already very expressive—undelimited continuations—the kind introduced by call/cc—and even fewer implement the more expressive delimited continuations. Continuations (and tail recursion) can, in a first-class, functional way, express all local and non-local control features, and are an integral part of efficient implementations of algebraic effects systems, both as language features and (most importantly) as libraries.]]>Sun, 12 Jul 2020 00:00:00 UThttps://amelia.how/posts/the-semantics-of-evaluation-amp-continuations.htmlAméliaThe G-machine In Detail, or How Lazy Evaluation Works
https://amelia.how/posts/the-gmachine-in-detail.html
With Haskell now more popular than ever, a great deal of programmers deal with lazy evaluation in their daily lives. They’re aware of the pitfalls of lazy I/O, know not to use foldl, and are masters at introducing bang patterns in the right place. But very few programmers know the magic behind lazy evaluation—graph reduction.]]>Fri, 31 Jan 2020 00:00:00 UThttps://amelia.how/posts/the-gmachine-in-detail.htmlAmélia