R&D software engineer at Alcatel-Lucent Submarine Networks, author of Functional Programming in Java (Manning Publications) and double bass jazz player
Pierre-Yves's articles
![Lessons in Abstraction: What FP Can Teach OOP](https://uploads.sitepoint.com/wp-content/uploads/2017/04/1491471888abstraction-oop-fp-300x200.jpg)
Abstraction is the key to tenable code bases. Where OOP eyes abstraction with suspicion, functional programming pushes it as far as possible.
![What Is Referential Transparency?](https://uploads.sitepoint.com/wp-content/uploads/2017/03/1488923337snail-referential-transparency-300x172.jpg)
Referential transparency is a tool to help programmers reason about their programs and make them safer, and easier to test and to maintain.
![Types Are Mightier than Tests](https://uploads.sitepoint.com/wp-content/uploads/2017/02/1487705552specifying-behavior-with-types-300x199.jpg)
Functional programming can dramatically reduce the need for testing by using types to reduce the number of possible implementation choices.
![Lazy Computations in Java with a Lazy Type](https://uploads.sitepoint.com/wp-content/uploads/2017/01/1484576019lazy-types-java-300x169.jpg)
Java is known as a mostly strict language. It's useful, however, to implement a 'Lazy' type for lazy initialization, deferred computations, etc.
![In Praise of Laziness](https://uploads.sitepoint.com/wp-content/uploads/2017/01/1483434434java-laziness-300x183.jpg)
Java is known as a strict language regarding references and method arguments. It's however possible (and very useful) to implement laziness in types.