Working through the examples and exercises from Okasaki's "Purely Functional Data Structures" in Haskell