The Haskell Road To Logic, Maths And Programming