From Ocado Technology
Polyglot software engineer specialised in developing distributed applications. Functional programming enthusiast. Loves the human component in software projects. Drinks a lot of tea. Has a blog at michalplachta.com. He currently works as team leader at Ocado Technology, where he is building actor-based software for automated warehouse.
Basic functional concepts like immutable data, second-order functions, lambdas and function composition can already be found in the modern programmer’s toolkit.
During this talk you will learn about more advanced functional concepts and how they can solve real problems. I will talk about pattern matching, algebraic data types, type classes, functional abstractions and folding.
I will show you a practical example written using today’s Java functional constructs and build up from there. I will use only JVM-based languages to show you how they can improve the code, make it more maintainable and safe.
Who should attend your session?
Java developers who understand and use basic functional constructs like immutability and lambdas. Also, anybody who wants to know what kind of problems more advanced functional tricks solve.
What are the 'next steps' for an attendee to take after attending your session?
I will share the repository with all the code in Java and Scala. All the problems and solutions are implemented and can be compared side by side. You are encouraged to go and play with the code and try to solve the problems using pure-OO imperative way.
Who is your favourite fictional British character?
What are the more advanced aspects of functional programming?
Things like pattern matching, algebraic data types, type classes, functional abstractions, folding and type-level programming are not super-advanced as ideas. They are however very hard to get right in practice and that's the biggest challenge for FP beginners.
What is the most challenging aspect of functional programming?
In functional programming, the most important and challenging aspect is that everything is data, even your business logic. You need to come up or reuse many high level abstractions that are well named and researched.