Меню:
Unfortunately, I don't have time anymore to update this list, the last additions were about 2 years ago :-(
The first variant of this article was published in the first issue of Russian magazine "Practice of functional programming", but I decided to continue to maintain it, as more books were released (Russian version of this article also includes description of books published in Russian). You can leave comments and suggestions in the comment widget on this page, or send them to me via e-mail (Updates to this page usually happening not so often — every 2-3 months).
Descriptions for the books are relatively short — just to give an overview of the book's topics, otherwise this article will become too big. For some of books there are more detailed reviews published in my blog. You can also follow my reviews on Goodreads.
If you will order some of these books, please (if possible), use links from this page — this allows me to buy new books and add them to review.
Functional programming has very long history and a lot of books was released in paper & electronic forms. These books covers all areas, from theoretical foundations of functional programming to programming in concrete languages & frameworks.
Functional Programming in General
In this list I tried to collect books, that are dedicated to functional programming in general, including theoretical foundations of lamda-calculus, etc.:
- Structure and Interpretation of Computer Programs — classical textbook on foundations of programming, but it provides introduction to functional programming techniques & uses Scheme as main language. The full version is also available online on site of MIT Press;
- Purely Functional Data Structures — wonderful book by Chris Okasaki on how to work with complex data structures in pure functional programming languages. I need to mention, that there is freely available theses with the same name, but book's content is slightly different from them;
- The Functional Approach to Programming book by Guy Cousineau & Michel Mauny), describes functional programming in general and could be used as a textbook (with examples in Caml);
- Introduction to Functional Programming — lecture notes for FP course by John Harrison that he taught in Cambridge University. This course provides description of lambda-calculus, introduction to types and shows how this could be used in Caml Light;
- An Introduction to Functional Programming Through Lambda Calculus — one more introduction to functional programming & lambda calculus;
- The Pearls of Functional Algorithm Design book by Richard Bird, shows how to implement different tasks & algorithms using functional programming;
- The Algorithms: A Functional Programming Approach describes implementation of different algorithms (including some from "Purely Functional Data Structures") in pure functional programming languages. Examples are written in Haskell;
- The Programming Languages: Application and Interpretation book by Shriram Krishnamurthi is textbook for course "Programming languages". It reviews different aspects of design and development of programming languages. All examples are in Scheme;
- The How to Design Programs: An Introduction to Programming and Computing book (it also available online and distributed with PLT Scheme) is a textbook about programming in general. In demonstrates different approaches to programs development (using Scheme for examples);
- The Concrete Abstractions. An Introduction to Computer Science Using Scheme book (also freely available) is an introduction to core concepts of computer science & programming;
- The Lambda-Calculus and Combinators: An Introduction books provides introduction to theoretical foundations of lambda-calculus;
- The Lambda Calculus. Its Syntax and Semantics describes theoretical foundations of lambda calculus in great details;
- Pattern Calculus: Computing with Functions and Structures tries to describes dependencies between pattern calculus, lambda-calculus, programming languages, etc.
- Foundations for Programming Languages (Foundations of Computing) — this book discusses type theory & implementation of programming languages, including functional one.
- Practical Foundations for Programming Languages by Robert Harper describes foundations of programming languages, based on the type theory. This draft version of this book is also freely available.
- The Programming Language Concepts (Undergraduate Topics in Computer Science) book uses F# to demonstrate basic concepts of programming languages, and also describes some problems of implementation, such as garbage collection, etc., including implementation of small toy language.
- The Functional Approach to Data Management: Modeling, Analyzing and Integrating Heterogeneous Data book describes how functional programming approaches could be used for work with data.
- Lambda Calculus with Types (Perspectives in Logic) - one more book describing typed lambda calculus.
- The Parametric Lambda Calculus: A Metamodel for Computation describes the metamodel for reasoning about different types of computations.
- Lambda-calculus, Combinators and Functional Programming provides and introduction into lambda calculus and combinators.
More freely available books you can find at the site of Free Tech Books project.
Type Theory, Category Theory, etc.
Type theory plays central role in functional programming, especially for strongly typed programming languages, like Haskell. Category theory also belongs to the theoretical foundations of functional programming. There are several books dedicated to these topics:
- Types and Programming Languages — classical book on type theory by Benjamin C. Pierce. This books covers different areas of type theory, including type inference and related questions;
- Advanced Topics in Types and Programming Languages — collection of articles on type theory (by different authors);
- Programming in Martin-Löf's Type Theory: An Introduction — freely available dedicated to type theory;
- Type Theory and Functional Programming — freely available book about type theory and its relation to functional programming;
- The Lectures on the Curry-Howard Isomorphism book describes relationship between type theory & proof theory; доказательств и теорией типов.
- Basic Category Theory for Computer Scientists is an introduction to category theory from the point of view of computer science;
- Conceptual Mathematics: A First Introduction to Categories is a very detailed and very written introduction to category theory, that could be pretty useful when studying functional programming;
- Categories for the Working Mathematician by Saunders Mac Lane is about basic concepts of category theory, with more concentration on mathematical side of it;
- The Interactive Theorem Proving and Program Development book is a practical introduction to the development of proofs and certified programs using Coq;
- Certified Programming with Dependent Types (beta-version is freely available) describes how Coq could be used to prove correctness of programs;
- Software Foundations, written by Benjamin C. Pierce together with colleagues, is base for course on logic, functional programming & programs correctness (using Coq);
- Category Theory for Computing Science is an introduction to category theory;
- Learn you an Agda and Achieve Enlightenment! - this book should be an introduction into the Agda language.
Implementation of Functional Programming Languages
Some of aforementioned books provide some details of implementation of functional programming languages. But there are also books, that are completely dedicated to this topic:
- The Design Concepts in Programming Languages book is dedicated to theoretical & practical aspects of development of programming languages;
- The The Implementation of Functional Programming Languages book, written by Simon Peyton Jones in 1987, describes such topics, as lambda-calculus, types infer & checking, pattern matching, etc., and how these things could be used to implement functional programming languages;
- The Implementing functional languages: a tutorial book was written by Simon Peyton Jones & David Lester in 1992, and shows how to implement simple functional programming language;
- Freely available Functional Programming and Parallel Graph Rewriting book describes different models of functional programming languages, and uses Clean language as example;
- The Garbage Collection: Algorithms for Automatic Dynamic Memory Management is completely dedicated to description of different strategies for garbage collection that are often used in functional programming languages. The new edition was published in 2011th under title The Garbage Collection Handbook: The Art of Automatic Memory Management.
- The Modern Compiler Implementation in ML books describes how to implement compilers (parsing, code generation, etc.) using the Standard ML;
- Compiling with Continuations shows how continuation-passing programming style could be used for performing optimization & programs transformations. The book uses the Standard ML as implementation language.
Overview Books About Different Languages
There are several books that describe different programming approaches & techniques, and use different programming languages for this task. Usually they mention functional programming languages. I want to mention following books that could provide good overview of functional programming approach:
- The Advanced Programming Language Design book (online-версия) contains information about different programming paradigms, including several chapters on functional & logical programming;
- Concepts, Techniques, and Models of Computer Programming describes major programming paradigms & computational models — object-oriented, imperative, functional, etc.
- Concepts in Programming Languages one more book of John Mitchell dedicated to description of different programming languages;
- Programming Language Pragmatics, 3ed describes different programming languages, including F# and Scheme;
- Essentials of Programming Languages, by author of Little/Seasoned/Reasoned Schemer books. This book describes main concepts of different programming languages.
Functional Programming for Programmers in Other Languages
In the last years, several books were published, whose main topic is an introduction to functional programming for developers in "traditional" languages, like Java, C#, etc.:
- The Functional programming for Java developers book (by the author of "Programming Scala") demonstrates main approaches & techniques of functional programming, but is using Java for examples. The main goal of this book — make Java developers interested in new approaches & benefits of functional programming;
- The Wiley, published the Functional Programming in C#: Classic Programming Techniques for Modern Projects book, that shows how to use functional programming techniques in C#.
- Functional Programming for the Object-Oriented Programmer is an introduction into functional programming for people, who has an experience with object-oriented programming. The book uses Clojure to demonstrate described concepts.
- Functional C shows how the programs in C programming language could be written in functional programming style.
Specific Functional Programming Languages
In this section I collected most interesting (IMHO) books on specific functional programming languages.
Relatively good introduction to specific functional programming languages you can find in the Seven Languages in Seven Weeks book, published by Pragmatic Bookshelf. It describes basics of programming in 7 languages (Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell), including small examples. I think, that this book could be used to understand, will you want to continue to learn particular language, or not.
Haskell
I want to mention following Haskell-specific books:
- The Introduction to Functional Programming using Haskell by Richard Bird is a functional programming textbook and it uses Haskell for examples. It describes base concepts of functional programming and their application in Haskell. The book contains many examples & exercises for self study.
- The Real World Haskell is a great book on Haskell language, because besides description of the language itself, it also shows how to use Haskell in real-life: data parsing, testing, database & GUI programming. You can also read it online for free.
- The Haskell Road To Logic, Maths And Programming shows how Haskell could be used in mathematics & logic.
- The Programming in Haskell book, written by Graham Hutton, compactly describes Haskell, and could be used as reference for people, who already know some Haskell, or other functional language, such as, OCaml or Standard ML. This book is also used in the video-lectures by Erik Meijer at Channel9.
- The Haskell: The Craft of Functional Programming book describes main concepts of Haskell, including separate chapters on data types, type classes, etc.
- The Haskell School of Expression: Learning Functional Programming through Multimedia shows practical aspects of work with Haskell, and describes relatively complex topics, such as, interaction with external stuff, designing Haskell programs, etc.
- At May 2012, O'Reilly released the Developing Web Applications with Haskell and Yesod book that describes how to develop web applications with Yesod framework. This book is also available online.
- In August 2013 the O'Reilly plans to release the Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming book by Simon Marlow. The draft version of this book you can find on book's site.
Besides books, there are a lot of online materials. I only list most interesting here:
- Learn You a Haskell for Great Good!: A Guide for Beginners (it's also available as printed book) — this book is written in very simple style, and I would recommend it as good introduction into Haskell;
- There is Haskell section on the Wikibooks project — it contains materials on different topics, with various degrees of complexity, including both theoretical & practical things.
- A Gentle Introduction to Haskell 98 is an "official" tutorial on Haskell 98;
- Yet Another Haskell Tutorial — one more Haskell tutorial — besides description of language, it contains many examples & exercises.
- Write Yourself a Scheme in 48 Hours — this tutorial allows you to learn Haskell in practice, when writing an interpreter for Scheme programming language.
- All About Monads is tutorial dedicated to theory & practice of monads in Haskell.
- Thinking Functionally with Haskell
- The Small book Speeding Through Haskell (site is in Spanish, but book is in English) tries to provide short introduction into this language.
- The Haskell School of Music — From Signals to Symphonies is a textbook about Haskell with focus on computer music concepts and applications.
Erlang
The Programming Erlang. Software for a Concurrent World book, is written by Joe Armstrong. For a long time was the only available book on Erlang, as previous book "Concurrent Programming in Erlang" was out of print, and it was hard to buy it. The "Programming Erlang" describes Erlang using very simple language and provides information about language itself & its base features. It also briefly describes more complex topics: databases, using the OTP, etc. It's good introduction, but if you need to know more, it's better to take one of the books, described below. In the fall 2013 the publisher plans to release the 2nd edition of this book.
The O'Reilly, released Erlang Programming in 2009th. It describes both language, and infrastructure-related stuff, including OTP, creation of GUI, test-driven development, debugging and much more. This book is more detailed comparing with Armstrong's.
Besides this, O'Reilly published the Introducing Erlang book that could be used as a short introduction into Erlang & base concepts of OTP. There is also companion for this book called Études for Erlang that contains an exercises not included into first book.
Another book on Erlang, the Erlang and OTP in Action was released by Manning in 2010th, and almost completely dedicated to use of OTP, and using Erlang with libraries in other languages. This book assume, that reader already knows Erlang.
In the June 2012, the O'Reilly released small book Building Web Applications with Erlang: Working with REST and Web Sockets on Yaws, that describes how to use Yaws framework to develop web-based applications.
Success of the Learn You a Haskell for Great Good! lead to creation of similar project for Erlang: Learn You Some Erlang for Great Good!, and you can read it online for free.
In the end of 2012th, the Springer company released unusual (for them) book: Handbook of Neuroevolution Through Erlang, that describes how Erlang was used for building of neural networks.
Besides these books, several Erlang-related books are planned for release:
- Erlang for .NET Developers — this book was announced at the end of 2011th, but there is no information when it will be released.
- Addison-Wesley plans to release the Building Scalable Applications with Erlang book that should provide an introduction into Erlang & OTP.
- Pragmatic Bookshelf plans to release the Programming Elixir book that describes the Elixir programming language that was designed for Erlang VM.
- O'Reilly also plans to release book about the Elixir language that is called Introducing Elixir. Getting Started in Functional Programming.
Caml & Objective Caml
There are several books about Objective Caml (OCaml) language:
- Most prominent between the is freely available Developing Applications with Objective Caml, that describes not only the OCaml language, but also provides many examples on how to develop software using this language.
- One more freely available book, the Introduction to Objective Caml was released not so long time ago. This book contains very good description of language, and examples of its use.
- The OCaml for Scientists book describes how to use OCaml for "scientific programming"
— data processing, mathematics, data visualization & performance optimization.
- One more existing book, Practical OCaml, describes OCaml language, but as I can see from reviews, it's written not so good as expected by many readers.
- The OCaml from the Very Beginning book is a textbook for OCaml, and besides description of the language, contains a number of exercises (with answers) that could be useful when studying this language.
- The freely available Think OCaml. How to Think Like a Computer Scientist provides an introduction to computer science & programming, and it uses OCaml as base language.
- Another freely available book — Unix system programming in OCaml by Xavier Leroy and Didier Rémy, explains how to use OCaml for Unix programming, including work with files, sockets, processes, threads, etc.
The ZINC experiment: an economical implementation of the ML language is a technical report, written by Xavier Leroy (author of OCaml) in 1990th, and it contains pretty detailed description of ML-like language implementation. This report could be very interesting for all who wants to know about internals of Caml & OCaml languages.
And in the fall of 2013th, O'Reilly plans to publish the Real World OCaml book that should be a popular introduction into the OCaml language, like the "Real World Haskell" book was for Haskell. The text of book is also available on separate site.
F#
There are several books about F# programming:
- Foundations of F# was published in 2007th and describes basics of language, plus shows how to program in it using different approaches. It also shows how to use it in practice for graphical user interface & work with databases. The new edition of this book was released in 2009th under title Beginning F#.
- The Expert F# 3.0 book discusses more advanced topics, such as interoperation with code in other languages, use of .Net libraries, work with databases, data parsing, asynchronous programming, etc.
- F# for Scientists is similar to "OCaml for Scientists", but adapted for F#. It contains information on how to use F# for "scientific programming" — data visualization, data processing, etc.
- The Programming F# book was released by O'Reilly in 2009th, and it contains description of actual F# (at that time) version — starting with basics language (including functional & object-oriented programming approaches). After that, it describes use of .Net libraries, metaprogramming, asynchronous & parallel programming. In appendix there is an information about existing libraries for data processing and visualization. In 2012th, O'Reilly released the 2nd edition of this book, that describes F# 3.0.
- Besides this, O'Reilly released one small book dedicated to F#: Building Web, Cloud, and Mobile Solutions with F#.
- In the end of 2009th, Manning published the Functional Programming for the Real World: With Examples in F# and C# book that describes declarative approach to program development, and demonstrates it with examples in F# and C#. This book could be interesting for developers, who're working on the .Net platform, and who want to learn new programming approaches.
- The Flying Frog Consultancy also released the Visual F# 2010 for Technical Computing book that describes version of F# that is provided together with MS Visual Studio 10.
- Wrox also released book on F# called Professional F# 2.0 — it contains description of language together with many examples.
- There is ebook Friendly F# (Fun with game programming) that you can buy on Amazon. This book introduces F# through game development.
- The free The F# Survival Guide book contains enough information about functional programming and F# language.
- Another useful online resource is F# for fun and profit that contains many articles about F#.
- The F# for C# Developers book by Microsoft Press is an introduction into F# language for developers who already have an experience in programming C# and using .Net.
The Manning plans to release another book on F#: F# Deep Dives, that describes how to use F# to solve concrete tasks.
Standard ML
The Standard ML language is described by several books:
- The ML for the Working Programmer book is an introduction to this language, with many examples of its use;
- The The Little MLer book is more like succinct reference for this language;
- The Unix System programming with Standard ML book (pdf) demonstrates how to use this language to perform real-world tasks;
- The Elements of ML Programming, ML97 Edition book, describes both language, and how can it be used in practice. This book could be used as an introduction to Standard ML.
- Elementary Standard ML is simple introduction to Standard ML.
- Programming in Standard ML - the draft version of Robert Harper's book on Standard ML.
Besides these books, there also books that are dedicated to language's standard: The Definition of Standard ML and The Standard ML Basis Library describe both language & standard library in great details.
Lisp
During the long history of Lisp development, many books were published about this language (and its variants):
- The Practical Common Lisp (free online version) book is very good introduction to programming in Common Lisp. Besides language's description, it provides many useful examples on how to organize your programs, how to use macros & CLOS, use CL for web & network programming, etc. Book shows how to build complete applications using Common Lisp.
- Paradigms of Artificial Intelligence Programming: Case Studies in Common LISP — classical book by Peter Norvig. It's main topic is artificial intelligence, and it shows how to use Common Lisp to solve some of the tasks in this branch.
- The ANSI Common Lisp by Paul Graham, is for people, who're just starting to program in Common Lisp. The book contains description of the language together with many example.
- On Lisp, also by Paul Graham, is dedicated to more complex tasks of programming in Common Lisp: how to use & write macros, how to use them to create domain-specific languages (DLS), etc.
- The Let Over Lambda book also dedicated to "more complex" topics of Common Lisp programming — creation & use of macros, "correct" design of programs, etc.
- The Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS and The Art of Metaobject Protocol books provide detailed information on programming with Common Lisp Object System (CLOS). The most part of the second book is dedicated to description of Metaobject Protocol, that is grounding base of the CLOS, and I would recommend it to all, who is interested in information about different approach to object-oriented programming (OOP).
- The Common Lisp: The Language, 2ed (also available online) is a complete reference on the Common Lisp language.
- Successful Lisp: How to Understand and Use Common Lisp is one more book for beginners
— it introduces Lisp in relatively easy way. There is also online version of this book.
- Lisp in Small Pieces is well-known book on Lisp. It describes implementations of Lisp & Scheme, including programming with continuations, implementation of interpreter & compiler for these languages, support for macros, and much more.
- The freely available Common Lisp: A Gentle Introduction to Symbolic Computation book is pretty detailed introduction to programming in Common Lisp. This books is also available as paperback.
- The Starch Press released in 2010th one more book on Lisp — Land of LISP: Learn to Program in LISP, One Game at a Time!. This book explains Lisp is written in humorous manner, and using comics-like illustrations. More information you can find on the site of this book.
Vsevolod Dyomkin for a long time interviewed many well-known Commom Lisp developers, and now these interviews are available as free ebook: Lisp Hackers. Interviews with 100x More Productive Programmers.
Several years ago, the O'Reilly planned to release book on Common Lisp under title "Lisp Outside the Box", and several chapters were available on project's site, but this project was abandoned. As you can see from table of contents, it was planned to cover wide range of topics — from Common Lisp's basics, to application development for web & desktop, including how to use concrete libraries & development environments.
Scheme
There are enough books about Scheme programming language. Following books describe, both language & different aspects of its use. These books could be used as references, and also as addition to "Structure and Interpretation of Computer Programs" and "How to Design Programs", where Scheme is used for examples:
- The Little Schemer;
- The Seasoned Schemer;
- The Reasoned Schemer;
- The Scheme Programming Language, 4ed, also available online.
In the spring of 2013th, the Realm of Racket book was released. This book describes the Racket language (former PLT Scheme). It's similar to "Land of Lisp" book (they have the same author), and provide information in similar manner.
Prolog
Huge interest to Prolog in the 80-90th, lead to publishing a huge amount of books. Here is only small part of available literature, that I think could be interesting for reader:
- Prolog Programming for Artificial Intelligence, 4ed is a classical book on Prolog in application to artificial intelligence;
- The Logic Programming with Prolog is a very good book on Prolog for beginners. It describes basics of logical programming with Prolog, together with examples of concrete tasks;
- Learn Prolog Now! is an introductory course to programming in Prolog. There is also freely available online version of this book;
- Programming in Prolog: Using the ISO Standard — one more textbook on Prolog, that demonstrates basic programming techniques for this language;
- Clause and Effect: Prolog Programming for the Working Programmer is a small introduction to Prolog for developers who are using other programming languages;
- The The Craft of Prolog book is for people, who already learned Prolog, but want to make their knowledge deeper;
- The Art of Prolog, Second Edition: Advanced Programming Techniques book is dedicated to discussion of problems, that are usually not covered in introduction-level books: how to build interpreters & compilers, program transformations, logical programming theory;;
- The Practice of Prolog — this book shows how to design and organize relatively big Prolog programs for solving different problems;
- Prolog Programming in Depth is another book on "more complex" aspects of Prolog programming: interaction with external systems, imperative programming in Prolog, building of expert systems, etc.
There is also a number of freely available resources that have some relation to Prolog and logic programming:
- Prolog and Natural Language Analysis book
- Algorithms for Computational Linguistics
- Computational Semantics
- Data Integration. The Relational Logic Approach
- Warren's Abstract Machine: A Tutorial Reconstruction
- Simply Logical. Intelligent Reasoning by Example
- A Grammatical View of Logic Programming
- Inductive Logic Programming: From Machine Learning to Software Engineering
Scala
The Scala language became relatively popular, and already used in many companies, such as, Twitter, LinkedIn, etc. Many books were already published for this language (I need to mention, that books published before 2011th, can be incompatible with current versions of the language):
- Programming in Scala: A Comprehensive Step-by-step Guide (published by Artima Inc.) was a first book about this language. This book contains very detailed description of the language, together with explanation of different programming approaches. Book also covers practical aspects, such as, creation of graphical user interface, etc. The 2nd edition of this book was released in 2011th, and 1st edition became freely available.
- Programming Scala: Scalability = Functional Programming + Objects (O'Reilly, 2009th) provides detailed description of the language, and also covers some complex tasks, such as, creation of domain specific languages, etc. It also provides information about existing tooling for Scala. O'Reilly also made available free beta-version of this book.
- Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine (Pragmatic Programmers, 2009th) is a short (comparing to other books) introduction to programming in Scala. But this book describes all main topics — interaction with JVM, concurrent programming, pattern matching, etc. It's assumed that reader is familiar with Java.
- Beginning Scala (Apress, 2009) is similar to previous book — it's practical introduction to Scala programming, showing main features using practical examples.
- The Steps in Scala: An Introduction to Object-Functional Programming book was released in 2010th — this book provides an introduction to Scala using step-by-step approach, showing language on many examples.
- The Scala for the Impatient was released in 2012th — it shows how to work with Scala without much theoretical background — everything is illustrated by many examples, starting with base constructs, and up to very complex things, such as, parsing, advanced types, continuations, etc.
- The Scala in Action book by Manning provides an introduction to Scala for beginners, covering basics of the language, together with many practical examples.
- The Scala in Depth book (Manning, 2012) should be a companion book for "Scala in Action", and it's concentrated on the "not so easy" side of Scala programming — type system, actors, more functional programming, etc.
- The Definitive Guide to Lift: A Scala-based Web Framework book (Apress, 2009) provides detailed description of Lift — popular web-framework for Scala.
- In the 2011th, Manning also released book on Lift:
Lift in Action: The Simply Functional Web Framework for Scala. This book covers Lift
- x using many practical examples to make subject more understandable.
- The Actors in Scala (Artima, 2012) is completely dedicated to description of actors model of communications that is used in Scala.
- Another useful book to understand Scala's approach to concurrent programming is the Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors — it covers different approaches & models of concurrent programming, including implementations in Scala, Clojure and other languages.
- The Akka framework is often used with Scala, so following books could be useful: Akka Concurrency, Akka Essentials, and Composable Futures with Akka 2.0.
- The Introduction to the Art of Programming Using Scala book was released in fall 2012. There is also separate site where you can find more detailed information about this book.
- The Testing in Scala book describes how to use the ScalaTest and Spec2 testing frameworks, including how to integrate them into SBT's builds.
- The Pragmatic Enterprise Scala book describes how Scala could be used together with Java Enterprise Edition.
There are also freely available materials about this language:
- Besides language's specification, on the language's site is also available documents "A Brief Scala Tutorial" and "Scala by Example", that allows quickly get information about this language. Another useful section on the site is Learning Scala that contains links to books, lectures, and other study materials.
- Twitter, where Scala is actively used, published freely available several resources for Scala learning: Scala School! From ∅ to Distributed Service and Effective Scala — both are for people, who is just starting to study this language.
It's also planned to releases several books on Scala soon:
- Appress plans to publish the Pro Scala: Monadic Design Patterns for the Web book (although, it still delaying).
- Manning plans to release several books in the near future (all these books are
available as part of Manning's early access program (MEAP)):
- The Functional Programming in Scala doesn't describe language itself, but shows how to use functional programming approach in Scala.
- Play for Scala book describes new web framework Play.
- Scalatra in Action describes the Scalatra web framework that is more simple comparing with Lift or Play.
- SBT in Action describes the SBT - build system that's often used with Scala.
- The Atomic Scala should be an introduction into the Scala language.
- The ScalaCheck: The Definitive Guide book describes the ScalaCheck library.
- O'Reilly also plans to release in 2013 the Scala Cookbook book that will contain recipes for concrete tasks.
- The Pragmatic Bookshelf publishing plans to release the Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM.
- The Scala on Android: How to do efficient Android programming with Scala book will provide an information how to use Scala to program an Androind applications.
Besides book & web-sites, there are several online courses for Scala, such as http://www.scalacourses.com/ or Functional Programming Principles in Scala (that is taught by Martin Odersky).
Clojure
Clojure is relatively young Lisp-like programming language for Java Virtual Machine (JVM). In contrast to other implementation, Clojure is separate language, not compatible neither with Common Lisp, nor with Scheme. This allowed to implement many interesting things, like immutable data, implicit parallel execution of code, very simple model of concurrent programming, software transactional memory, etc., while keeping two-way interaction with code in Java.
The first book on this language was released by Pragmatic Programmers in 2009 under title Programming Clojure. This book provided pretty good introduction to language, describing all basic features (for version 1.0, that was actual at the time of release). But you still need to use site of the language as a reference for functions, and other things. The 2nd edition of this book was released in 2012th, and it was updated to include information about version 1.3, covering all major changes between versions.
The second book on Clojure was released in 2010 as Practical Clojure. The Definitive Guide — it contains succinct description of language, including new functionality from version 1.2.0 — datatypes & protocols. But this book lacks description of infrastructure-related things, like IDE, build tools, etc.
In 2011th, Manning published 2 books on Clojure: Clojure in Action and The Joy of Clojure. Thinking the Clojure Way. First books is an introduction to language, where basics of language is described together with many practical examples. While the second book, is for people, who already has some Clojure experience and who want to get more information about "Clojure programming style". More detailed review of this book you can find in my blog. And the 2nd edition of "The Joy of Clojure" is currently in development.
O'Reilly also published book on Clojure — the Clojure Programming was written by well-known Clojure developers. This book provides very good description of Clojure, different libraries, shows how to use this language in practice, and also contains many advice on how to write idiomatic Clojure code.
The Developer.Press also released small book called Clojure Made Simple that describes the basics of language — data types, core functions, etc. But this book almost completely lacks description of concurrent programming stuff.
The Packt Publishing also published a book on Clojure: the Clojure Data Analysis Cookbook describes how Clojure could be used for data analysis, including use of Incanter project.
The ClojureScript language, that is developed in parallel with Clojure, allows you to write web applications that are executed in browser. The O'Reilly released a small book ClojureScript: Up and Running that describes basics of development with ClojureScript, including information about existing libraries.
The No Starch Press should also release book on Clojure under title Meet Clojure.
O'Reilly also plans to publish one more book on Clojure - Clojure Cookbook, and everybody can submit recipes that will be included into this book.
Recommendations
In this section I tried to put only that books, that I can recommend to read to study specific languages.
To study functional programming & Haskell, I can recommend the Introduction to Functional Programming using Haskell book by Richard Bird. More practical-oriented introductory books are Real World Haskell and Learn You a Haskell for Great Good!: A Guide for Beginners.
Studying of Erlang it's better to start with either from Erlang Programming by O'Reilly, or from Erlang and OTP in Action — both books provides enough information about language, and OTP.
For Scala you can select between several books. If you want to start to use it immediately, then you can choose Scala for the Impatient. But if you want to get more deep knowledge of this language, then the best choice is Programming in Scala: A Comprehensive Step-by-step Guide. And after them you can continue with Scala in Depth and other books.
To learn Clojure, the most actual books are Clojure Programming (more detailed) and 2nd edition of Programming Clojure — the both will provide you enough information about language, together with examples. And after them, I would recommend you to read The Joy of Clojure. Thinking the Clojure Way!
If you're interested in the Common Lisp, then you can start with Practical Common Lisp that will provide enough information to start with language. The more complex things are described in the On Lisp, The Art of Metaobject Protocol, Lisp in Small Pieces and other books.
For ML family of languages exists enough books. For OCaml you can start with an Introduction to Objective Caml, and use it together with language reference. After that you can take Developing Applications with Objective Caml and/or other languages. For F# it good idea to start with Expert F# 2.0 or Begining F#, and continue with F# for Scientists.
For Prolog I would recommend to start with Prolog Programming for Artificial Intelligence, 4ed , and then continue with books, listed above.
Last change: 04.09.2017 15:42

