Composing Souffle analyses in Haskell

In this video series, I build 2 separate static analyses (unbound variable + name shadowing analysis) for a small language. In part 1 I focus mostly on creating the separate algorithms. In part 2 I combine both folds using semigroups so all analyses happen in a single tree traversal.

The code can be found in this repository.

Note: Sorry about the sound in first half of part 2, I accidentally disabled my mic before streaming. It should still be possible to follow along though!