Finding out the Haskell way to reason about data.