The Haskell Road to Logic, Maths, and Programming