Functional Patterns for the Object Oriented

Object-oriented languages have during the last decade introduced a number of features originating from the functional programming domain. Most notable are the introduction of lambda expressions and stream processing libraries like LINQ in C# and the Stream API in Java, but other features are emerging as well. C# 7.0 introduced the concepts of tuples and pattern matching, both of which have for a long time been fundamental features of functional languages like Haskell. Why do people consider these features to be functional? And why are people with a background in functional programming thrilled to see these features introduced in the object-oriented world?

This talk will focus on a set of case studies that illustrate how functional patterns are typically applied in Haskell and how solutions based on those patterns differ from the traditional OO approach. The talk does not assume a background in functional programming, but hold on to your hat and be prepared for something different!