Funkcionális programozás [Functional Programming, Haskell Basics]
Functional programming, Haskell basics is an introductory book in one of the most interesting and elegant programming paradigm. The author focuses on the fundamentals of functional programming using Haskell as main language for programming problems. The book is based on the courses that the author has taught at Sapientia Hungarian University of Transylvania since 2007.
The first chapter compares two programming paradigms, namely the imperative and the functional programming, detailing the differences and similarities. The second chapter provides a general introduction to the principles of Haskell, such as types, type classes, data structures (lists and tuples), definitions, modules, etc. The third chapter presents in detail the programming features of Haskell, where guards, the layout rule, recursion, pattern matching, different types of expression, function composition, higher-order functions, and the evaluation strategy are highlighted. The fourth chapter deals with lists, the most important and most frequently used data structure in functional programming. This chapter also presents some sorting algorithms and provides the theory needed to understand the higher-order fold functions. The fifth chapter introduces the basics of input and output operations, file management, and it presents implementations related to exceptions. It also describes the concept of monads, which is the basic structure for managing side effects in Haskell. The sixth chapter focuses on types and data structures, such as record types, algebraic data types, parameterized types, and recursive types and presents implementations related to binary trees.
The last chapter presents some implementations of combinatorial problems. The implementation of the binary search algorithm, problems solved with ByteStrings, and the processing of JSON data are also included in this chapter. The topics of the book are presented in an appropriate didactic and academic style, where at the end of each chapter there are proposed problems related to the presented material.