前言
多年以来,函数式编程被认为是少数人的游戏,这些人总是强调自己在智力上的优越性,认为函数式编程的智慧不适合推广给普罗大众。写作此书的目的就是为了挑战这种思想,函数式编程并没有多么了不起,也绝不是少数人的游戏。
在过去的两年中,我请伦敦Java社区的开发人员以各种方式测试Java 8的新特性。我发现很多人都喜欢Java 8的新用法和类库。他们有可能被一些术语和高大上的概念吓到,但是稍稍一丁点儿函数式编程技巧都能给编程带来便利,他们对此喜不自胜。人们津津乐道的话题之一是使用新的Stream API操作对象和集合类时(比如从所有的唱片列表中过滤出在英国本地出品的唱片时),代码是多么易读。
组织这些Java社区活动,让我认识到了示例代码的重要性。人们通过不断地阅读和消化这些简单的示例,最终归纳出某种模式。我还意识到术语是多么令人讨厌,因此,在介绍一个晦涩的概念时,我都会给出通俗易懂的解释。
对很多人来说,Java 8提供的函数式编程元素有限:没有单子1,没有语言层面的惰性求值,也没有为不可变性提供额外支持。对实用至上的程序员来说,这没什么大不了的,我们只想在类库级别抽象,写出简单干净的代码来解决业务问题。如果有人为我们写出这样的类库,那再好不过了,这样我们就可以把主要精力放在日常工作上了。
1别担心,这是本书唯一提及单子的地方。
