• papers podcast posts projects
    • 2021年02月28日
    • 9 分
    Some Thoughts on Numeric Classes

    This is just a quick post, crystallizing some of the ideas I’ve had recently about organizing numeric classes in Haskell.

    • Haskell
    • Math
    • 2021年02月05日
    • 5 分
    Programming Problem: Run-Length Encoding

    This is just a quick post about a programming problem that’s been circulating around on twitter recently:

    • Haskell
    • Programming
    • 2021年01月10日
    • 13 分
    Making an IO

    Recently I’ve been wrapping up my work on a compiler for a subset of Haskell. While my subset doesn’t (yet) have any support for IO, I’ve been thinking about how to implement it.

    • Compiler
    • Haskell
    • 2020年12月31日
    • 8 分
    (Basic) Universal Properties in Haskell

    This is a post going over the basic concept of defining objects through Universal Properties, in Category Theory, with explanations and examples in Haskell.

    • Category Theory
    • Haskell
    • 2020年12月28日
    • 67 分
    (Haskell in Haskell) 3. Parsing

    This is the third post in the Haskell in Haskell series.

    In this post, we’ll go over creating a parser for our subset of Haskell. This stage of the compiler is responsible for taking the tokens that our lexer produced in the previous part.

    • Compiler
    • Haskell
    • Programming Languages
    • 2020年12月10日
    • 61 分
    (Haskell in Haskell) 2. Lexing

    This is the second post in the Haskell in Haskell series.

    In this post, we’ll go over creating a lexer for our subset of Haskell. This stage of the compiler goes from the raw characters in our a source file, to a more structured stream of tokens.

    We’ll finally be digging into some serious code this time, so get your editor ready if you’re following along!

    • Compiler
    • Haskell
    • Programming Languages
    • 2020年12月07日
    • 7 分
    (Un)fold as (Co)algebra

    One cool thing about lists is that they have canonical ways of consuming and producing them: folds, and unfolds. It turns out that these are canonical, in that folding and unfolding functions are themselves isomorphic to lists. In this post, we’ll explore why this is true.

    • Algebra
    • Category Theory
    • Haskell
    • 2020年11月23日
    • 19 分
    (Haskell in Haskell) 1. Setup

    This is the first “real” post in the Haskell in Haskell series.

    In this post we’ll go over setting up a basic project in Haskell. We’ll be building our compiler on top of this foundation in the next posts.

    • Compiler
    • Haskell
    • Programming Languages
    • 2020年11月01日
    • 13 分
    (Haskell in Haskell) 0. Introduction

    This is an introduction to a series I’m calling Haskell in Haskell. The goal of this series of posts is to go through the implementation of a subset of the Haskell language, from parsing, to typechecking, to code generation, using Haskell itself.

    • Compiler
    • Haskell
    • Programming Languages
    • 2020年10月22日
    • 1 分
    Haskell in Haskell

    This is a series I’m writing about implementing a compiler for a subset of Haskell, using nothing else than Haskell itself! We’ll go through the whole process, going from a file containing Haskell code to generating C that we can compile into a functional executable. I’ve only just started working on the series, so stay tuned for new posts as they come along: I’ll update this page whenever they arrive.

    • Compiler
    • Haskell
    • Parsing
    • Programming Languages
    • 2020年10月18日
    • 12 分
    Lexer Combinators

    When you write a parser in Haskell, you want to use parser combinators. When you write a lexer, you should use lexer combinators! We’ll see what these are, and how to use them to write a simple lexer.

    • Haskell
    • Programming Languages
    • 2020年09月09日
    • 10 分
    Recursive Types as Initial Algebras

    Recently (well, more like a month ago), I came across this interesting observation: In my head, I immediately jumped to the notion of Algebras in Category Theory. I had recently studied that notion, found it quite interesting, and was very happy to see this observation, because it was actually quite obvious to me thanks to what I’d recently learned. The goal of this post is to unpack that tweet, and then explain why that observation is true.

    • Category Theory
    • Haskell
    • Math
    • 2020年08月30日
    • 17 分
    Encoding the Naturals

    In this post, we’ll cover 3 ways I know of encoding the natural numbers $\mathbb{N}$ in your standard functional language with recursive types and polymorphism. At least, these are the 3 most generalized ways of doing it. As we’ll see, some common encodings are just specific cases of a more general encoding. Prerequisites Some familiarity with defining data types in a functional-esque language might be helpful, but shouldn’t be strictly necessary.

    • Category Theory
    • Haskell
    • Math