https://kevintechnology.com/2012/04/24/haskell-final-project.html