Introduction to functional programming using haskel - Bird