functional programming in scala filetype pdf