This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
From looking at the chapter titles of the book, I wanted to know if this is targeted more toward a Java programmer, a Haskell programmer or both? The titles with 'monad' and 'monoid' in them prompted my curiosity.
I would not say the book is targeted at Haskell programmers, we are definitely trying to make the work for someone coming from a Java background, without much or any prior exposure to functional programming. Here's what we say in the Preface regarding the audience:
This book is intended for readers with at least a little bit of programming experience. We had a particular kind of reader in mind while writing the book--an intermediate-level Java or C programmer who is curious about functional programming. But we believe this book is well suited for programmers coming from any language, at any level of experience.
Prior expertise is not so important as motivation and curiosity. Functional programming is a lot of fun, but it's a challenging topic. It may even be especially challenging for the most experienced programmers, because it can be such a different way of thinking than they might be used to. No matter how long you have been programming, you must come prepared to be a beginner once again.
This book does not require any prior experience with Scala, but we won't spend a lot of time and space discussing Scala's syntax and language features. Instead we will introduce them as we go, with a minimum of ceremony, mostly as a consequence of covering other material. These minimal introductions to Scala should be enough to get you started with the exercises. If you have further questions about the Scala language, you should supplement your reading with another book on Scala or look up specific questions in the Scala language specification.
Part 1 of the book is just us explaining what FP is, and then walking through the basic techniques of FP. We try to motivate each technique for people who might be coming from an imperative programming background.
That does help. The last FP I tried was in Oz, about 6 years ago. It would be interesting to have an introduction.
Oz supports constraint programming, too, so one of our number produced a timetable application in Oz, which occupied surprisingly little space on disc, and ran very fast. But that was constraint programming.