`pairs = [ (x,y) | x <- [0..], y <- [0..] ]`

This program doesn't really enumerate all "valid" pairs in finite time. For example (0, 1) is never reached because the list will not halt traversing the first component. How can we enumerate the space of all indexable pairs of integers? Moreover, given a recursive context-free grammar, how to write a program that enumerates all valid expressions?

This type of enumeration problems is where the Omega Monad can be useful. It acts like a "breadth-first" search for list comprehension. I recall finding the `conde`

primitive (sometimes known as `condi`

) from miniKanren fascinating. Now I learned the Omega Monad is exactly the same thing.

— Permalink]]>

Oxford's publications on algorithms, functional programming, and category theories. I peeked through a few articles. From those I learned novel ideas and enjoyed them.

— Permalink]]>

Hask is the category of Haskell types. This article lists some interesting exceptions where the programming language do not quite hold the consistent properties to the corresponding mathematically description of category theory objects.

— Permalink]]>

Mostly book/resource recommendation. The author added detailed reasons and excerpts for each book.

— Permalink]]>

I just learned that people actually made a software for the idea! Fascinating!

— Permalink]]>

<blockquote>A modern commutative diagram editor with support for tikz-cd.</blockquote>

— Permalink]]>

List of books on category theory

— Permalink]]>