Haskell road to logic, maths, and programming