Note: Had some obligitory "Couldn't match expected type... with actual type..." moments, but it's nice to use Haskell again, especially via Stack